一、 tkinter的基本概念
tkinter是python中自带的用于GUI编程的模块,tkinter是对图形库TK的封装,tkinter是跨平台的,既在linux下编写的程序可以不加修改地在windows下运行,它的优势在于可移植性。
使用tkinter可以创建完整的GUI程序,在tkinter中可以直接使用文本框、按钮、标签等组件进行GUI编程,换句话说,要实现某个界面元素,只要调用对应的组件即可。tkinter是python中的一个模块,可以像其他模块在python的交互式shell中被导入tkinter模块被导入即可使用tkinter中的模块方法等。
下文将使用pycharm演示最基础的九个GU程序代码,并在代码中附有注释,常用的组件和方法本文都有涉及。
二、实例
1,创建一个最简单的带标签和按钮的窗口。代码如下
import tkinter #导入tkinter模块
root = tkinter.Tk() #生成root主窗口
lable = tkinter.Label(root,text="hello,tkinter!") #生成标签
lable.pack() #将标签添加到root主窗口
button1 = tkinter.Button(root,text="Button1") #生成标签
button1.pack(side=tkinter.LEFT) #将标签添加到root主窗口,并放在左边
button2 = tkinter.Button(root,text="Button2") #生成标签
button2.pack(side=tkinter.RIGHT) #将标签添加到root主窗口,并放在左边
root.mainloop() #进入消息循环
运行结果如下:
2,在主窗口中创建各种不同的按钮,代码如下:
import tkinter
root = tkinter.Tk()
button1 = tkinter.Button(root,
anchor = tkinter.E, #制定文本的对齐方式
text = 'Button1',
width = 40,
height = 5)
button1.pack()
button2 = tkinter.Button(root,
text = 'Button2',
bg = 'blue')
button2.pack()
button3 = tkinter.Button(root,
text='Button3',
width = 14,
height = 1)
button3.pack()
button4 = tkinter.Button(root,
text='Button4',
width = 60,
height=5,
state = tkinter.DISABLED) #指定按钮为禁用模式
button4.pack()
root.mainloop()
运行结果如下:
3,创建不同类型的文本框
import tkinter
root = tkinter.Tk()
entry1 = tkinter.Entry(root,
show = '*') #输入文本框中的字符被显示为*
entry1.pack()
entry2 = tkinter.Entry(root,
show = '#',
width=50)
entry2.pack()
entry3 = tkinter.Entry(root,
bg='red', #将文本的背景色设置为红色
fg='blue') #将文本的前景色设置为蓝色,前景色就是文本中字体的颜色
entry3.pack()
entry4 = tkinter.Entry(root,
selectbackground = 'red', #被选中时,文本的背景色变为红色
selectforeground = 'gray')
entry4.pack()
entry5 = tkinter.Entry(root,
state=tkinter.DISABLED) #文本框设置为禁用
entry5.pack()
edit1 = tkinter.Text(root,
selectbackground='red',
selectforeground='gray')
edit1.pack()
root.mainloop()
运行结果为:
4,创建不同类型的标签组件
import tkinter
root = tkinter.Tk()
label1 = tkinter.Label(root,
anchor = tkinter.E,
bg = 'blue',
fg = 'red',
text = 'python',
width = 30,
height = 5)
label1.pack()
label2 = tkinter.Label(root,
text = 'python GUI\ntkinter',
justify = tkinter.LEFT, #设置多行文本为左对齐
width = 30,
height = 5)
label2.pack()
label3 = tkinter.Label(root,
text = 'python GUI\ntkinter',
justify = tkinter.RIGHT, #设置多行文本为右对齐
width = 30,
height = 5)
label3.pack()
label4 = tkinter.Label(root,
text = 'python GUI\ntkinter',
justify = tkinter.CENTER, #设置多行文本居中
width = 30,
height = 5)
label4.pack()
root.mainloop()
运行结果如下:
5,创建添加菜单的主窗口:
import tkinter
root = tkinter.Tk()
menu = tkinter.Menu(root)
submenu = tkinter.Menu(menu,tearoff = 0) #生成下拉菜单
submenu.add_command(label="open") #向下拉菜单中添加open命令
submenu.add_command(label="save")
submenu.add_command(label="close")
menu.add_cascade(label="File",menu=submenu) #将下拉菜单添加到菜单中
submenu = tkinter.Menu(menu,tearoff = 0)
submenu.add_command(label="copy")
submenu.add_command(label="paste")
submenu.add_separator() #向下拉菜单中添加分割符
submenu.add_command(label="cut")
menu.add_cascade(label="Edit",menu=submenu) #将下拉菜单添加到菜单中
submenu = tkinter.Menu(menu,tearoff=0)
submenu.add_command(label="About")
menu.add_cascade(label="help",menu=submenu)
root.config(menu=menu)
root.mainloop()
运行结果如下:点击一下Edit就会看到分割线
6,插件弹出式菜单:
import tkinter
root = tkinter.Tk()
menu = tkinter.Menu(root,tearoff=0) #插件菜单
menu.add_command(label="Copy")
menu.add_command(label="paste")
menu.add_separator() #向弹出式菜单中添加分隔符
menu.add_command(label="cut")
def popupmenu(event): #定义右键事件的处理函数
menu.post(event.x_root,event.y_root) #显示菜单
root.bind("<Button-3>",popupmenu) #显示菜单
root.mainloop()
运行结果如下:右击一下就会看到效果
7,创建单选框与复选框((单选框就是一组相互排斥的选项,只能选择一项,就像选择题的ABCD选项一样),(复选框就是一个复选框组件表示两种不同状态,即选中一种状态,未选中一种状态))
import tkinter
root = tkinter.Tk()
r = tkinter.StringVar() #使用Steingvar生成字符串变量用于单选框组件
r.set('1') #初始化变量值
radio = tkinter.Radiobutton(root,
variable = r,
value = '1',
text = 'Radio1')
radio.pack()
radio = tkinter.Radiobutton(root,
variable = r,
value = '2',
text = 'Radio2')
radio.pack()
radio = tkinter.Radiobutton(root,
variable = r,
value = '3',
text = 'Radio3')
radio.pack()
radio = tkinter.Radiobutton(root,
variable = r,
value = '4',
text = 'Radio4')
radio.pack()
c = tkinter.IntVar() #使用IntVar生成字符串变量用于单选框组件
c.set(2) #初始化变量值
check = tkinter.Checkbutton(root,
text = 'Checkbutton',
variable = c,
onvalue = 1,
offvalue = 2)
check.pack()
root.mainloop()
print(r.get())
print(c.get())
运行结果为:
8,创建按钮形式的单选框复选框
import tkinter
root = tkinter.Tk()
r = tkinter.StringVar()
r.set('2')
radio = tkinter.Radiobutton(root, #设置单选框组件
variable = r, #设置单选框关联的变量
value = '1',
indicatoron = 0, #将单选框设置为按钮模式
text = 'Dadio1')
radio.pack()
radio = tkinter.Radiobutton(root,
variable = r,
value = '2',
indicatoron = 0, #将单选框设置为按钮模式
text = 'Dadio2')
radio.pack()
radio = tkinter.Radiobutton(root,
variable = r,
value = '3',
indicatoron = 0, #将单选框设置为按钮模式
text = 'Dadio3')
radio.pack()
radio = tkinter.Radiobutton(root,
variable = r,
value = '4',
indicatoron = 0, #将单选框设置为按钮模式
text = 'Dadio4')
radio.pack()
c = tkinter.IntVar() #使用IntVar生成整型变量用于复选框
c.set(2)
check = tkinter.Checkbutton(root,
text = 'Checkbutton',
variable = c, #设置复选框关联的变量
indicatoron = 0, #将复选框设置为按钮模式
onvalue = 1, #选中为1
offvalue = 2) #未选中为二
check.pack()
root.mainloop()
运行结果为:
9,使用Canvas绘制图形:
import tkinter
root = tkinter.Tk()
canvas = tkinter.Canvas(root,
width = 600,
height = 480,
bg = 'white')
canvas.create_text(302,77, #使用crest_text绘制文字
text = 'use canvas',
fill = 'grey') #文字颜色为灰色
canvas.create_text(300,75,
text = 'use canvas',
fill = 'blue')
canvas.create_polygon(290,114,316,114,330,130,310,146,284,146,270,130) #调用绘制六边形的方法
canvas.create_oval(280,120,320,140, #调用绘制椭圆的方法
fill = 'white')
canvas.create_line(250,130,350,130) #绘制直线
canvas.create_line(300,100,300,160)
canvas.create_rectangle(90,190,510,410,width = 5) #绘制矩形
canvas.create_arc(100,200,500,400, #绘制圆弧
start = 0,extent = 240, #设置圆弧起止角度
fill = "pink") #设置填充色为粉红色
canvas.create_arc(103,203,500,400,
start = 241,extent = 118,
fill = 'red')
canvas.pack() #将Canvas添加到主窗口
root.mainloop()
运行结果为: