欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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控件等,后续补上,或者到时候在百度吧。