Frame类是放其他组件的容器,值得注意的是Frame本身也是组件。
我们可以继承Frame类,实现面向对象开发
from tkinter import *
from tkinter import messagebox
class Application(Frame): #继承Frame类,新组件
def __init__(self,master=None):
# Frame是父类,得主动的调用父类的构造器
super().__init__(master) # 显式调用父类构造方法
self.pack() #调用父类函数
self.master = master # 设置子类属性
self.createWidget() # 调用子类方法
def createWidget(self):
#调用Button类构造方法,创建两个按钮
self.button1 = Button(self)
self.button1["text"] = "点击送花"
self.button1.pack()
self.button1["command"] = self.songhua
self.btnquit = Button(self, text="退出", command=root.destroy)
self.btnquit.pack()
def songhua(self):
messagebox.showinfo("送花","送很多的花")
if __name__ == '__main__':
root = Tk()
root.geometry("500x200+200+300")
root.title("GUI面向对象写法")
app = Application(master=root)
root.mainloop()