一、下载模块
在终端中输入如下命令
pip install TK
二、第一个GUI程序
代码演示
from tkinter import * from tkinter import messagebox # 根据类Tk的无参构造函数 root = Tk() # 设置窗口标题 root.title('我的第一个GUI程序') # 设置窗口的大小和位置 root.geometry('300x200+100+200') # 在主窗口中添加可视化组件,比如按钮(Button) btn01 = Button(root,text='点我送花') # 通过几何布局管理显示,管理组件的大小和位置 btn01.pack() # 事件处理,通过绑定时间处理程序,响应用户操作所出发的事件(比如:单击、双击等) def songhua(e): # e就是事件 messagebox.showinfo('阿峰', '送你一朵小红花') btn01.bind('<Button-1>', songhua) # 调用组建的mainloop()方法,进入事件循环 root.mainloop()
运行结果
geometry说明
主窗口的位置大小
通过geometry('wxh(+-)x(+-)y')进行设置,w为宽度,h为高度。
+x表示距屏幕左边的距离;-x表示距屏幕右边的距离
+y表示距屏幕上边的距离;-y表示距屏幕下边的距离
三、Frame框架的使用
Frame框架是一个tkinter组件,表示一个矩形区域,Frame一般作为容器使用,可以放置其它组件,从而实现复杂的布局。
代码演示
'''测试一个经典的GUI程序的写法,使用面向对象的方式''' from tkinter import * from tkinter import messagebox import tkinter as tk class Application(tk.Frame): '''一个经典的GUI程序的类的写法''' def __init__(self, master=None): # Application继承Frame,但是不能自动调用Frame中的构造函数,以下为手动调用Frame中的构造函数 tk.Frame.__init__(self, master) self.master = master self.pack() self.createWidget() def createWidget(self): '''创建组件''' # command点击按钮后执行的命令 self.btn01 = Button(self, text='点击有惊喜', command=self.songhua) self.btn01.pack() # 设置退出按钮,command=root.destroy退出整个程序 self.btn02 = Button(self, text='退出', command=root.destroy) self.btn02.pack() def songhua(self): messagebox.showinfo('送花', '送你一朵小红花') if __name__ == '__main__': root = Tk() root.geometry('400x100+200+300') root.title('一个经典的GUI程序类的测试') app = Application(master=root) root.mainloop()
运行结果
四、Label标签
Label(标签)主要用于显示文本信息,也可以显示图像
Label标签的常用属性
1、width、height
用于指定区域大小,如果显示是文本,则以单个英文字符大小为单位(一个汉字占两个字符位置);如果显示是图像,则以像素为单位。默认值是根据具体的内容动态调整。
2、font
指定字体样式和字体大小,如:font=(font_name, size)
3、image
显示在Label上的图像,目前tkinter只支持gif格式
4、bg、fg
fg(foreground):前景色;bg(background):背景色
5、justify
针对多行文字的对齐,可设置justify属性,可选值:“left”,“center”,“right”
代码演示
import tkinter as tk from tkinter import * from PIL import ImageTk, Image class Application(tk.Frame): def __init__(self, master=None): tk.Frame.__init__(self,master) self.master = master self.pack() self.createWidget() def createWidget(self): '''创建组件''' self.label01 = Label(self, text='第一个Label', width=11, height=2, fg='white', bg='black') self.label02 = Label(self, text='第二个Label', width=11, height=2, fg='blue', bg='white', font=('黑体',12)) self.label01.pack() self.label02.pack() # 显示图像 # 把photo声明成全局变量,如果是局部变量,本方法执行完毕后,图像对象销毁,窗口显示不出图像 global img photo = Image.open("2.jpg") # 括号里为需要显示在图形化界面里的图片 photo = photo.resize((200, 100)) # 规定图片大小 img = ImageTk.PhotoImage(photo) self.label03 = Label(self,image=img) self.label03.pack() self.label04 = Label(self, text='如果\n云\n知道',borderwidth=1, relief='groove', justify='right', fg='white', bg='black',font=('黑体',12)) self.label04.pack() # 设置退出按钮 self.btn01 = Button(self, text='退出', command=root.destroy) self.btn01.pack() if __name__ == '__main__': root = Tk() root.title('Label测试') root.geometry('300x300+200+300') app = Application(master=root) root.mainloop()
运行结果
程序说明