GUI之tkinter入门各种控件的使用
程序员文章站
2022-04-12 09:58:01
...
Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口,能够实现图形可视化。
1,首先是最基础的
import tkinter as tk
#创建窗口
root=tk.Tk()
#设置标题
root.title('tkinter的标题')
#设置窗口的高度和位置
root.geometry('500x250+100+100') #500,250为宽高,100100为左上角的位置
# 进入消息循环,保持窗口,才能进行后续的操作
root.mainloop()
2,设置控件的位置及,后续后讲述很多种控件,但是他们的位置设置方式是一致的。事务绑定
#比如控件的名称为kongjian
#kongjian.grid(row=6,column=0)
#对于每一个控件Widget,你都可以为其绑定方法function。
#widget.bind(event,handler)
import tkinter as tk
root=tk.Tk()
root.title('tkinter的标题')
root.geometry('500x250+100+100')
def callback(event):
print ("hello")
t1=tk.Label(root,text="显示的内容",bg="pink",fg="red",font=("Arial",12),wraplength=100,width=20,height=10,anchor="nw")
#将这个函数与鼠标单击控件绑定
t1.bind("<Button-1>", callback)
t1.pack()
root.mainloop()
3,label控件,最简单的控件,仅是显示一些文字,无后续操作
import tkinter as tk
root=tk.Tk()
root.title('tkinter的标题')
root.geometry('500x250+100+100')
#root为主窗体名,text为显示内容;font为字体及大小;bg背景色,fg为字体颜色;wraplength为自动换行阈值;
#anchor:文字位置 n上,e右,w左,s下,center居中;还可以写在一起:nw即为左上角
t1=tk.Label(root,text="显示的内容",bg="pink",fg="red",font=("Arial",12),wraplength=100,width=20,height=10,anchor="nw")
t1.grid(row=1,column=0)
root.mainloop()
4button控件,一个按钮,一般在在上面链接一个功能;这里的command可以是各种函数,
import tkinter as tk
root=tk.Tk()
root.title('tkinter的标题')
root.geometry('500x250+100+100')
def func1():
print('一个测试')
button1 = tk.Button(root, text="按钮",width=10, height=2, command=func1)
button2 = tk.Button(root, text="退出窗口",width=10, height=2, command=root.quit)
button1.grid(row=1,column=0)
button2.grid(row=2,column=0)
root.mainloop()
5、Entry控件,一个input控件,输入一些东西
import tkinter as tk
root=tk.Tk()
root.title('tkinter的标题')
root.geometry('500x250+100+100')
#输入密码,一般用show="*",将之隐藏
entry1 = tk.Entry(root, show="*")
entry1.grid(row=1,column=0)
#定义变量并绑定
e = tk.Variable()
entry2 = tk.Entry(root, textvariable=e)
entry2.grid(row=2,column=0)
#设置值
e.set('hh')
#取值,通过变量取或直接取
print(e.get())
print(entry2.get())
#最后进行一个小的测试,添加一个button控件,显示输入的值
e3=tk.Variable()
entry3 = tk.Entry(root, show="*",textvariable=e3)
entry3.grid(row=3,column=0)
def print_pwd():
print(e3.get())
button2 = tk.Button(root, text="print,密码",width=10, height=2, command=print_pwd)
button2.grid(row=4,column=0)
root.mainloop()
6,text控件,用于显示多行文字
import tkinter as tk
root=tk.Tk()
root.title('tkinter的标题')
root.geometry('500x250+100+100')
#普通text
t1=tk.Text(root,width=30,height=5)
t1.grid(row=1,column=0)
str='''春晓
春眠不觉晓,处处闻啼鸟。
夜来风语声,花落知多少.'''
t1.insert(tk.INSERT,str)
root.mainloop()
7Radiobutton单选框
import tkinter as tk
root=tk.Tk()
root.title('tkinter的标题')
root.geometry('500x250+100+100')
#定义变量并绑定
r=tk.IntVar()
#定义多个单选框
r1=tk.Radiobutton(root, text="选项1", value=1, variable=r)
r1.grid(row=0,column=0)
r2=tk.Radiobutton(root, text="选项2", value=2, variable=r)
r2.grid(row=1,column=0)
r3=tk.Radiobutton(root, text="选项3", value=3, variable=r)
r3.grid(row=2,column=0)
#最后测试一下,r的值就是被选择项的value
def print_1():
print(r.get())
b1 = tk.Button(root, text="print",width=10, height=2, command=print_1)
b1.grid(row=3,column=0)
root.mainloop()
8 Checkbutton复选框控件,感觉跟设多个单选框没啥区别啊,除了好像不能设置value
import tkinter as tk
root=tk.Tk()
root.title('tkinter的标题')
root.geometry('500x250+100+100')
#定义变量并绑定
r1=tk.BooleanVar()
r2=tk.BooleanVar()
r3=tk.BooleanVar()
#复选框
c1=tk.Checkbutton(root, text="选项1", variable=r1)
c1.grid(row=0,column=0)
c2=tk.Checkbutton(root, text="选项2", variable=r2)
c2.grid(row=1,column=0)
c3=tk.Checkbutton(root, text="选项3", variable=r3)
c3.grid(row=2,column=0)
def print_1():
text=''
if r1.get()>0:
text+='选项1'
if r2.get()>0:
text+='选项2'
if r3.get()>0:
text+='选项3'
print(text)
b1 = tk.Button(root, text="print",width=10, height=2, command=print_1)
b1.grid(row=3,column=0)
root.mainloop()
9 listbox控件
import tkinter as tk
root=tk.Tk()
root.title('tkinter的标题')
root.geometry('500x250+100+100')
#新建变量
lbv=tk.StringVar()
#创建一个listbox,使用属性有BROWSER,这里仅用browser举例
# SINGLE(与browser类似),
#EXTENDED(支持shift和ctrl),
#MULTIPLE支持多选。
lb=tk.Listbox(root,selectmode=tk.BROWSE)
lb.grid(row=1,column=0)
# 有两个特殊的值ACTIVE和END,ACTIVE是向当前选中的item前插入一个
# (即使用当前选中的索引作为插入位置);END是向Listbox的最后一项添加插入一项
for item in ['苹果','鸭梨','香蕉','葡萄','西瓜']:
lb.insert(tk.END,item)
#在开始添加
lb.insert(tk.ACTIVE,'芒果')
#选中 参数1为开始的索引,参数2为结束的索引
lb.select_set(2,5)
#取消选中 参数1为开始的索引,参数2为结束的索引
lb.select_clear(2,4)
#删除
lb.delete(5,5)
#获取值
print(lb.get(2, 3))
# 返回当前的索引项,不是item元素
print(lb.curselection())
# 判断:一个选项是否被选中
print(lb.selection_includes(3))
##事件绑定
def myprint(event):
print(lb.curselection()) # 返回下标
print(lb.get(lb.curselection())) # 返回值
lb.bind("<Double-Button-1>", myprint)
root.mainloop()
后续还有很多控件,比如Combobox下拉控件,Frame控件等,后续补上,或者到时候在百度吧。