常用组件汇总列表
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
网友评论