美文网首页
面向对象GUI

面向对象GUI

作者: Chaweys | 来源:发表于2021-01-02 00:39 被阅读0次

常用组件汇总列表
Tkinter类         名称         简介
Toplevel          顶层         容器类,可用于为其他组件提供单独的容器;Toplevel有点类似于窗口
Button            按钮         代表按钮组件
Canvas            画布         提供绘图功能,包括直线、矩形、椭圆形、多边形、位图等。
Checkbutton       复选框       可供用户勾选的复选框
Entry             单行输入框   用户可输入的内容
Frame             容器         用于装载其它GUI组件
Label             标签         用于显示不可编辑的文本或图标
LabelFrame        容器         也是容器组件,类似于Frame,但它支持添加标题
Listbox           列表框       列出多个选项,供用户选择
Menu              菜单         菜单组件
Menubutton        菜单按钮     用来包含菜单的按钮(包括下拉式、层叠式等)
OptionMenu        菜单按钮     Menubutton的子类,也代表菜单按钮,可通过按钮打开一个菜单
Message           消息框       类似于标签,但可以显示多行文本,Label出现之后基本不再使用
PanedWindow       分区窗口     该容器会被划分成多个区域,每添加一个组件占一个区域,用户可通过拖动分隔线来改变各区域的大小
Radiobutton       单选按钮     可供用户点边的单选钮
Scale             滑动条       拖动滑块可设定起始值和结束值,可显示当前位置的精确值
Spinbox           微调选择器   用户可通过该组件的向上、向下箭头选择不同的值
Scrollbar         滚动条       用于为组件(文本域、画布、列表框、文本框)提供滚动功 能
Text              多行文本框   显示多行文本

#coding=utf-8
'''
使用面向对象创建典型的GUI
'''
from tkinter import *
from tkinter import messagebox


class Application(Frame):
    def __init__(self,master):     #重定义父类的构造方法
        super().__init__(master)   #显示的调用的父类的构造方法,才能调用父类的实例属性
        self.master=master         #可定义可不定义,因为父类中已经对此有定义self.maser=master
        self.pack()
        self.createWidget()

    def createWidget(self):
        self.btn01=Button(self)    #因为创建按钮对象需要传入主窗口对象,这里的self就是当前类对象,当前类对象就是一个窗口对象
        self.btn01["text"]="点我就送花"
        '''
        self.btn01.bind("<Button-1>", self.songhua)
        这里不能这么用,因为TypeError: songhua() takes 1 positional argument but 2 were given
        self.songhua作为类里的方法,是没有定义入参的,而bind()是将第一个参数作为后面方法的入参传递的,所以这里报错。
        而在这里,无需监听什么具体事件,不管什么事件都将执行self.songhua
        '''
        self.btn01["command"]=self.songhua
        self.btn01.pack()

        self.btnquit=Button(self)
        self.btnquit["text"] = "退出"
        #在这里,无需监听什么具体事件,不管什么事件都将执行root.destroy,root是在类对象app之前定义的所以可以正常调用
        self.btnquit["command"] = root.destroy
        self.btnquit.pack()

    def songhua(self):
        messagebox.showinfo("Mesaage", "送你一朵玫瑰花")

if __name__=="__main__":
    root=Tk()                            #创建应用程序主窗口对象
    root.title("面向对象式的GUI")
    root.geometry("500x300+300+250")
    app = Application(root)              #主窗口对象传递给类Application创建类对象
    root.mainloop()
面向对象GUI.png

相关文章

网友评论

      本文标题:面向对象GUI

      本文链接:https://www.haomeiwen.com/subject/aiejoktx.html