本节程序也是GUI应用程序编写的一个主要结构,采用了面向对象的方式,更加合理的组织代码。
通过类Application
组织整个GUI程序,类Application
继承了Frame
及通过继承拥有了父类的特性。通过构造函数__init__()
初始化窗口中的对象,通过createWidgets()
方法创建窗口中的对象。
Frame
框架是一个tkinter
组件,表示一个矩形的区域。Frame
一般作为容器使用,可以放置其他组件,从而实现复杂的布局。
【示例】标准的GUI程序类的写法
1"""测试一个经典的GUI程序的写法,使用面向对象的方式"""23from tkinter import *4from tkinter import messagebox567class Application(Frame):8 """一个经典的GUI程序的类的写法"""910 def __init__(self, master=None):11 super().__init__(master) # super()代表的是父类的定义,而不是父类对象12 self.master = master13 self.pack()141516 self.createWidget()171819 def createWidget(self):20 """创建组件"""21 self.btn01 = Button(self)22 self.btn01["text"] = "点击送花"23 self.btn01.pack()24 self.btn01["command"] = self.songhua2526 # 创建一个退出按钮27 self.btnQuit = Button(self, text="退出", command=root.destroy)28 self.btnQuit.pack()293031 def songhua(self):32 messagebox.showinfo("送花","送你99朵玫瑰花")333435if __name__ == '__main__':36 root = Tk()37 root.geometry("400x100+200+300")38 root.title("一个经典的GUI程序类的测试")39 app = Application(master=root)40 root.mainloop()
"""测试一个经典的GUI程序的写法,使用面向对象的方式"""
from tkinter import *
from tkinter import messagebox
class Application(Frame):
"""一个经典的GUI程序的类的写法"""
def __init__(self, master=None):
super().__init__(master) # super()代表的是父类的定义,而不是父类对象
self.master = master
self.pack()
self.createWidget()
def createWidget(self):
"""创建组件"""
self.btn01 = Button(self)
self.btn01["text"] = "点击送花"
self.btn01.pack()
self.btn01["command"] = self.songhua
# 创建一个退出按钮
self.btnQuit = Button(self, text="退出", command=root.destroy)
self.btnQuit.pack()
def songhua(self):
messagebox.showinfo("送花","送你99朵玫瑰花")
if __name__ == '__main__':
root = Tk()
root.geometry("400x100+200+300")
root.title("一个经典的GUI程序类的测试")
app = Application(master=root)
root.mainloop()