python-Tkinter图形界面

Label控件

import tkinter
# 创建主窗口
win = tkinter.Tk()
# 设置标题
win.title("yudanqu")
# 设置大小和位置
win.geometry("400x400+200+50")

'''
Label:标签控件,可以显示文本
'''
# win:父窗体
# text:显示的文本内容
# bg:背景色
# fg:字体颜色
# font:字体
# wraplength:指定text文本中多宽之后换行
# justify:设置换行后的对齐方式
# anchor:位置 n北,e东,w西,s南,center居中;还可以写在一起:ne东北方向
label = tkinter.Label(win,
                      text="this is a word",
                      bg="pink", fg="red",
                      font=("黑体", 20),
                      width=100,
                      height=100,
                      wraplength=1000,
                      justify="left",
                      anchor="nw")

# 显示出来
label.pack()


win.mainloop()

在这里插入图片描述

Button控件

import tkinter


def func():
    print("我被调用了")

# 创建主窗口
win = tkinter.Tk()
win.title("Button")
win.geometry("400x400+200+50")


# 创建按钮
button1 = tkinter.Button(win, text="调用方法", command=func, width=10, height=10)
# 显示出来
button1.pack()

button2 = tkinter.Button(win, text="执行任务", command=lambda: print("我直接执行了"))
button2.pack()

button3 = tkinter.Button(win, text="退出", command=win.quit)
button3.pack()

win.mainloop()

在这里插入图片描述

Entry控件

import tkinter

win = tkinter.Tk()
win.title("Entry")
win.geometry("400x400+200+50")

'''
Entry:输入控件,用于显示简单的文本内容
'''

# 密文显示
entry1 = tkinter.Entry(win, show="*") # show="*" 可以表示输入密码
entry1.pack()

# 绑定变量
e = tkinter.Variable()

entry2 = tkinter.Entry(win, textvariable=e)
entry2.pack()

# e就代表输入框这个对象
# 设置值
e.set("设置值了")
# 取值
print(e.get())
print(entry2.get())

win.mainloop()

在这里插入图片描述

点击按钮输出输入框中的内容

import tkinter

win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")

def showinfo():
    # 获取输入的内容
    print(entry.get())

entry = tkinter.Entry(win)
entry.pack()

button = tkinter.Button(win, text="按钮", command=showinfo)
button.pack()

win.mainloop()

在这里插入图片描述

Text控件

import tkinter

win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")

'''
文本控件:用于显示多行文本
'''

# height表示的是显示的行数
text = tkinter.Text(win, width=20, height=10)
text.pack()

str = "Tkinter模块是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用。"
str.encode('utf8')
text.insert(tkinter.INSERT, str)

win.mainloop()

在这里插入图片描述

带滚动条的Text

import tkinter

win = tkinter.Tk()
win.title("scroll")
# win.geometry("400x400+200+50")

'''
文本控件:用于显示多行文本
'''

# 创建滚动条
scroll = tkinter.Scrollbar()

text = tkinter.Text(win, width=30, height=4)
# side放到窗体的哪一侧,  fill填充
scroll.pack(side=tkinter.RIGHT, fill=tkinter.Y)
text.pack(side=tkinter.LEFT, fill=tkinter.Y)
# 关联
scroll.config(command=text.yview)
text.config(yscrollcommand=scroll.set)

text.pack()

str = "谷歌查看教学区域详情,谷歌查看教学区域详情,谷歌查看教学区域详情,谷歌查看教学区域详情,谷歌查看教学区域详情,谷歌查看教学区域详情,谷歌查看教学区域详情,谷歌查看教学区域详情谷歌查看教学区域详情,谷歌查看教学区域详情,谷歌查看教学区域详情,谷歌查看教学区域详情"

text.insert(tkinter.INSERT, str)

win.mainloop()

在这里插入图片描述

Checkbutton多选框控件

import tkinter

win = tkinter.Tk()
win.title("Checkbutton")
win.geometry("400x400+200+50")

def updata():
    message = ""
    if hobby1.get() ==True:
        message += "money\n"
    if hobby2.get() == True:
        message += "power\n"
    if hobby3.get() == True:
        message += "people\n"

    # 清空text中所有内容
    text.delete(0.0, tkinter.END)
    text.insert(tkinter.INSERT, message)

# 要绑定的变量
hobby1 = tkinter.BooleanVar()
# 多选框
check1 = tkinter.Checkbutton(win, text="money", variable=hobby1, command=updata)
check1.pack()
hobby2 = tkinter.BooleanVar()
check2 = tkinter.Checkbutton(win, text="power", variable=hobby2, command=updata)
check2.pack()
hobby3 = tkinter.BooleanVar()
check3 = tkinter.Checkbutton(win, text="people", variable=hobby3, command=updata)
check3.pack()

text = tkinter.Text(win, width=50, height=5)
text.pack()

win.mainloop()

在这里插入图片描述

Radiobutton单选框

import tkinter

win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")

def updata():
    print(r.get())

# 绑定变量,一组单选框要绑定同一个变量,就能区分出单选框了
r = tkinter.IntVar()

radio1 = tkinter.Radiobutton(win, text="one", value=1, variable=r, command=updata)
radio1.pack()
radio2 = tkinter.Radiobutton(win, text="two", value=2, variable=r, command=updata)
radio2.pack()

win.mainloop()

在这里插入图片描述

Listbox控件

import tkinter

win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")

# 绑定变量
lbv = tkinter.StringVar()

# 与BORWSE相似,但是不支持鼠标按下后移动选中位置
lb = tkinter.Listbox(win, selectmode=tkinter.SINGLE, listvariable=lbv)
lb.pack()

for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]:
    # 按顺序添加
    lb.insert(tkinter.END, item)

# 打印当前列表中的选型
print(lbv.get())

# 设置选项
# lbv.set(("1","2","3"))

# 绑定事件
def myprint(event):
    # print(lb.curselection()) # 返回下标
    print(lb.get(lb.curselection())) # 返回值
lb.bind("<Double-Button-1>", myprint)

win.mainloop()

在这里插入图片描述

Listbox控件滚动条

import tkinter

win = tkinter.Tk()
win.title("yudanqu")
# win.geometry("400x400+200+50")

# EXTENDED:可以使listbox支持shift和Ctrl
lb = tkinter.Listbox(win, selectmode=tkinter.EXTENDED)
lb.pack()

for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]:
    # 按顺序添加
    lb.insert(tkinter.END, item)

# 滚动条
sc = tkinter.Scrollbar(win)
sc.pack(side=tkinter.RIGHT, fill=tkinter.Y)
# 配置
lb.configure(yscrollcommand=sc.set)
lb.pack(side=tkinter.LEFT, fill=tkinter.BOTH)
# 额外给属性赋值
sc["command"] = lb.yview

win.mainloop()

在这里插入图片描述

Scale控件

import tkinter

win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")

'''
供用户通过拖拽指示器来改变变量的值,可以水平,也可以竖直
'''

# tkinter.HORIZONTAL水平
# tkinter.VERTICAL 竖直(默认)
# length:水平时表示宽度,竖直时表示高度
# tickintervar :选择值将会为该值得倍数

scale1 = tkinter.Scale(win, from_=0, to=100, orient=tkinter.HORIZONTAL, tickinterval=10, length=200)
scale1.pack()

# 设置值
scale1.set(20)

# 取值
# print(scale1.get())

def showNum():
    print(scale1.get())
tkinter.Button(win, text="按钮", command=showNum).pack()

win.mainloop()

在这里插入图片描述

Spinbox控件

import tkinter

win = tkinter.Tk()
win.title("数值范围控件")
win.geometry("400x400+200+50")

'''
数值范围控件
'''

# 绑定变量
v = tkinter.StringVar()

def updata():
    print(v.get())

# increment:步长,默认为1
# values要输入一个元组 最好不要和from和to同时使用,而且步长也没用
# command 只要值改变就会执行updata方法
sp = tkinter.Spinbox(win, from_=0, to=100, increment=5,
                     textvariable=v, command=updata)
# sp = tkinter.Spinbox(win, values=(0,2,4,6,8))
sp.pack()

# 赋值
v.set(20)
# 取值
print(v.get())

win.mainloop()

在这里插入图片描述

Menu顶层菜单

import tkinter

win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")

# 菜单条
menubar = tkinter.Menu(win)
win.config(menu=menubar)

def func():
    print("**********")

# 创建一个菜单选项
menu1 = tkinter.Menu(menubar, tearoff=False)

# 给菜单选项添加内容
for item in ['python','c','java','c++', 'c#','php','B','退出']:
    if item == '退出':
        # 添加分割线
        menu1.add_separator()
        menu1.add_command(label=item, command=win.quit)
    else:
        menu1.add_command(label=item, command=func)

# 向菜单条上添加菜单选项
menubar.add_cascade(label='语言', menu=menu1)

win.mainloop()

在这里插入图片描述

Menu鼠标右键菜单

import tkinter

win = tkinter.Tk()
win.title("lele")
win.geometry("400x400+200+50")

# 菜单条
menubar = tkinter.Menu(win)

def func():
    print("**********")

# 菜单
menu = tkinter.Menu(menubar, tearoff=False)
# 给菜单选项添加内容
for item in ['python','c','java','c++', 'c#','php','B','退出']:
    if item == '退出':
        # 添加分割线
        menu.add_separator()
        menu.add_command(label=item, command=win.quit)
    else:
        menu.add_command(label=item, command=func)

menubar.add_cascade(label="语言", menu=menu)

def showMenu(event):
    menubar.post(event.x_root, event.y_root)

win.bind("<Button-3>", showMenu)

win.mainloop()

在这里插入图片描述

Combobox下拉控件

import tkinter
from tkinter import ttk

win = tkinter.Tk()
win.title("Combobox")
win.geometry("400x400+200+50")

# 绑定变量
cv = tkinter.StringVar()

com = ttk.Combobox(win, textvariable=cv)
com.pack()

# 设置下拉数据
com["value"] = ("武汉", "杭州", "西安")

# 设置默认值
com.current(0)

# 绑定事件

def func(event):
    print(com.get())
    print(cv.get())
com.bind("<<ComboboxSelected>>", func)

win.mainloop()

在这里插入图片描述

Frame控件

import tkinter

win = tkinter.Tk()
win.title("Frame")
win.geometry("400x400+200+50")

'''
框架控件:在桌面上显示一个矩形区域,多作为一个容器控件
'''

frm = tkinter.Frame(win)
frm.pack()

# left
frm_l = tkinter.Frame(frm)
tkinter.Label(frm_l, text="左上", bg="pink").pack(side=tkinter.TOP)
tkinter.Label(frm_l, text="左下", bg="blue").pack(side=tkinter.TOP)
frm_l.pack(side=tkinter.LEFT)

# right
frm_r = tkinter.Frame(frm)
tkinter.Label(frm_r, text="右上", bg="green").pack(side=tkinter.TOP)
tkinter.Label(frm_r, text="右下", bg="red").pack(side=tkinter.TOP)
frm_r.pack(side=tkinter.RIGHT)

win.mainloop()

在这里插入图片描述

表格数据

import tkinter
from tkinter import ttk

win = tkinter.Tk()
win.title("Treeview")
win.geometry("600x400+200+50")

# 表格
tree = ttk.Treeview(win)
tree.pack()

# 定义列
tree["columns"] = ("姓名","年龄","身高","体重")
# 设置列,列还不显示
tree.column("姓名", width=100)
tree.column("年龄", width=100)
tree.column("身高", width=100)
tree.column("体重", width=100)

# 设置表头
tree.heading("姓名", text="姓名-name")
tree.heading("年龄", text="年龄-age")
tree.heading("身高", text="身高-height")
tree.heading("体重", text="体重-weight")

# 添加数据
tree.insert("", 0, text="line1", values=("李欢","33","167cm","66kg"))
tree.insert("", 1, text="line2", values=("刘宇","23","178cm","69kg"))

win.mainloop()

在这里插入图片描述

树状数据

import tkinter
from tkinter import ttk

win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")

tree = ttk.Treeview(win)
tree.pack()

# 添加一级树枝
treeF1 = tree.insert("",0,"浙江",text= "浙江", values=("F1"))
treeF2 = tree.insert("",1,"江苏",text= "江苏", values=("F1"))
treeF3 = tree.insert("",2,"湖北",text= "湖北", values=("F1"))

# 二级树枝
treeF1_1 = tree.insert(treeF1,0,"杭州",text="杭州",values=("F1_1"))
treeF1_2 = tree.insert(treeF1,1,"台州",text="台州",values=("F1_2"))
treeF1_3 = tree.insert(treeF1,2,"慈溪",text="慈溪",values=("F1_3"))

treeF2_1 = tree.insert(treeF2,0,"南京",text="南京",values=("F2_1"))
treeF2_2 = tree.insert(treeF2,1,"苏州",text="苏州",values=("F2_2"))
treeF2_3 = tree.insert(treeF2,2,"无锡",text="无锡",values=("F2_3"))

# 三级树枝
treeF1_1_1 = tree.insert(treeF1_1,0,"滨江区",text="滨江区")
treeF1_1_2 = tree.insert(treeF1_1,1,"西湖区",text="西湖区")

win.mainloop()

在这里插入图片描述

绝对布局

import tkinter

win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")

label1 = tkinter.Label(win, text="A", bg="blue")
label2 = tkinter.Label(win, text="B", bg="red")
label3 = tkinter.Label(win, text="C", bg="green")

# 绝对布局,窗口的变化对位置没有影响
label1.place(x=20,y=20)
label2.place(x=50,y=50)
label3.place(x=100,y=100)

win.mainloop()

在这里插入图片描述

相对布局

import tkinter

win = tkinter.Tk()
win.title("相对布局")
win.geometry("400x400+200+50")

label1 = tkinter.Label(win, text="A", bg="blue")
label2 = tkinter.Label(win, text="B", bg="red")
label3 = tkinter.Label(win, text="C", bg="green")

# 相对布局,窗体改变对控件有影响
label1.pack(fill=tkinter.Y, side=tkinter.LEFT)
label2.pack(fill=tkinter.X, side=tkinter.TOP)
label3.pack()

win.mainloop()

在这里插入图片描述

表格布局

import tkinter

win = tkinter.Tk()
win.title("表格布局")
win.geometry("400x400+200+50")

label1 = tkinter.Label(win, text="A", bg="blue")
label2 = tkinter.Label(win, text="B", bg="red")
label3 = tkinter.Label(win, text="C", bg="green")
label4 = tkinter.Label(win, text="D", bg="yellow")

# 表格布局
label1.grid(row=0,column=0)
label2.grid(row=0,column=1)
label3.grid(row=1,column=0)
label4.grid(row=1,column=1)

win.mainloop()

在这里插入图片描述

鼠标点击事件

import tkinter

win = tkinter.Tk()
win.title("点击")
win.geometry("400x400+200+50")


def func(event):
    print(event.x, event.y)

# <Button-1>  鼠标左键
# <Button-2>  鼠标滚轮
# <Button-1>  鼠标右键
# <Double-Button-1>  鼠标双击左键
# <Triple-Button-1>  鼠标三击左键

button1 = tkinter.Button(win, text="点击")
# bind 给控件绑定数据(参数一是绑定的事件,参数二是触发事件的函数)
button1.bind("<Button-1>", func)
button1.pack()

win.mainloop()

在这里插入图片描述

鼠标移动事件

import tkinter

win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")


# <B1-Motion>  左键移动
# <B2-Motion>  中键移动
# <B3-Motion>  右键移动


label = tkinter.Label(win, text="*********")
label.pack()

def func(event):
    print(event.x, event.y)

label.bind("<B1-Motion>", func)

win.mainloop()

在这里插入图片描述

鼠标释放事件

import tkinter

win = tkinter.Tk()
win.title("释放鼠标左键")
win.geometry("400x400+200+50")

# <ButtonRelease-1> 释放鼠标左键
# <ButtonRelease-2> 释放鼠标中键
# <ButtonRelease-3> 释放鼠标右键


label = tkinter.Label(win, text="*********", bg="red")
label.pack()

def func(event):
    print(event.x, event.y)

label.bind("<ButtonRelease-1>", func)

win.mainloop()

在这里插入图片描述

进入和离开事件

import tkinter

win = tkinter.Tk()
win.title("鼠标进入控件")
win.geometry("400x400+200+50")

# <Enter>  当鼠标进入控件时触发事件
# <Leave>  当鼠标离开控件时触发事件

label = tkinter.Label(win, text="*********", bg="red")
label.pack()

def func(event):
    print(event.x, event.y)

label.bind("<Enter>", func)
label.bind("<Leave>", func)


win.mainloop()

在这里插入图片描述

响应所有按键的事件

import tkinter

win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")

# <Key>  响应所有的按键(要有焦点)

label = tkinter.Label(win, text="*********", bg="red")
# 设置焦点
label.focus_set()
label.pack()

def func(event):
    print("event.char=", event.char)
    print("event.keycode=", event.keycode)

label.bind("<Key>", func)

win.mainloop()

在这里插入图片描述

响应特殊按键事件

import tkinter

win = tkinter.Tk()
win.title("响应左侧的shift键")
win.geometry("400x400+200+50")

# <Shift_L>  只响应左侧的shift键
# <Shift_R>
# <F5>
# <Return>  也就是回车键
# <BackSpace>  返回,也就是退格键

label = tkinter.Label(win, text="响应左侧的shift键", bg="red")
# 设置焦点
label.focus_set()
label.pack()

def func(event):
    print("event.char=", event.char)
    print("event.keycode=", event.keycode)


label.bind("<Shift_L>", func)


win.mainloop()

在这里插入图片描述

指定按键事件

import tkinter

win = tkinter.Tk()
win.title("指定按键事件")
win.geometry("400x400+200+50")


label = tkinter.Label(win, text="指定按键事件a", bg="red")
# 设置焦点
label.focus_set()
label.pack()

def func(event):
    print("event.char=", event.char)
    print("event.keycode=", event.keycode)


win.bind("a", func) # 注意前面改成了win,只需要写出按键名即可


win.mainloop()

在这里插入图片描述

组合按键事件

import tkinter

win = tkinter.Tk()
win.title("组合按键事件")
win.geometry("400x400+200+50")


# <Control-Alt-a>
# <Shift-Up>
# 只是control+alt不行

label = tkinter.Label(win, text="Shift-Up", bg="red")
# 设置焦点
label.focus_set()
label.pack()

def func(event):
    print("event.char=", event.char)
    print("event.keycode=", event.keycode)


win.bind("<Shift-Up>", func) # 注意前面改成了win,只需要写出按键名即可


win.mainloop()

在这里插入图片描述

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值