面向对象方式gui

使用面向对象的方式创建gui程序

  • 创建类,并且继承Frame

    class Application(Frame):
    
  • 在构造方法中调用父类方法创建,因为创建的类无法直接创建窗口对象

    def __init__(self,master=None):
            super().__init__(master) #调用父类构造方法
            self.master = master
            self.pack()
    
  • 可以使用类方法来创建一些组件

    def create_widget(self):
            self.button = Button(self)
            self.button["text"] = "问候"
            self.button.pack()
            self.button["command"] = self.hello
            self.button_quit = Button(self,text="退出",command=self.master.destroy)
            self.button_quit.pack()
    

    同时在构造方法中调用此方法

    def __init__(self,master=None):
            super().__init__(master) #调用父类构造方法
            self.master = master
            self.pack()
            self.create_widget()
    

    也可以创建其他函数,作为组件按钮的事件绑定

    绑定方式为:

    self.button["command"] = self.hello
    

    和之前的方法不一样

    self.button.bind("<Button-1>",self.hello)
    

    使用此方法会报错

  • root.title(“设置标题”)

  • root.geometry(“窗口宽度x窗口高度+窗口距离电脑屏幕左边距离+窗口距离电脑顶部距离”)

    root = Tk()
        root.title("面向对象")
        root.geometry("400x600+400+250")
        app = Application(master=root)
        app.pack()
        root.mainloop()
    
    
    
from tkinter import *
from tkinter import messagebox

class Application(Frame):

    def __init__(self,master=None):
        super().__init__(master) #调用父类构造方法
        self.master = master
        self.pack()
        self.create_widget()

    
    def create_widget(self):
        self.button = Button(self)
        self.button["text"] = "问候"
        self.button.pack()
        self.button["command"] = self.hello
        self.button_quit = Button(self,text="退出",command=self.master.destroy)
        self.button_quit.pack()

    def hello(self):
        messagebox.showinfo("message","hello world")

def main():
    root = Tk()
    root.title("面向对象")
    root.geometry("400x600+400+250")
    app = Application(master=root)
    app.pack()
    root.mainloop()


if __name__ == "__main__":
    main()

t.mainloop()

if name == “main”:
main()

![在这里插入图片描述](https://img-blog.csdnimg.cn/e0b330788fde48868598f43119b0a9f6.png)


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值