Python GUI 之 tkinter学习入门

tkinter学习入门

我的第一个GUI程序:

1.创建应用程序主窗口对象(也称:根窗口)

(1)通过类Tk的无参构造函数

from tkinter import *
root = Tk()

2.在主窗口中,添加各种可视化组件(比如:按钮(Button)、文本框(Label)等)

btn01 = Button(root)
btn01['text'] = '点我就送玫瑰花'

3.通过几何布局管理器,管理组件大小和位置

btn01.pack()

4.事件处理

(1)通过绑定事件处理程序,响应用户操作所触发的事件(比如:单击、双击等)

def sendFlower(e):
    messagebox.showinfo('Message', '送你一朵玫瑰花')
    print('送你一朵玫瑰花')
    
btn01.bind('<Button-1>', sendFlower)

5.打开窗口并进入事件循环

root.mainloop()

我的第一个GUI程序完整代码(带注释):

from tkinter import *
from tkinter import messagebox

root = Tk()
root.title('我的第一个GUI程序')
# 主窗口的位置和大小
root.geometry('500x300+750+350')

btn01 = Button(root)
btn01['text'] = '点我就送玫瑰花'

btn01.pack()

# e为事件对象,封装了单击、双击等操作。
def sendflower(e):
    # 第一个参数为消息弹窗的标题,第二个参数为消息弹窗的内容。
    messagebox.showinfo('Message', '送你一朵玫瑰花')
    print('送你一朵玫瑰花')


# 将事件函数绑定在按钮上,第一个参数代表出发事件的方法,如单击、双击等,<Button-1>代表单击。
btn01.bind('<Button-1>', sendflower)

# 调用组件的mainloop()方法,进入事件循环。
root.mainloop()

一、tkinter主窗口

主窗口位置和大小

通过geometry(‘wxh±x±y’)进行设置,w为宽度,h为高度。+x表示距屏幕左边的距离,-x 表示距屏幕右边的距离;+y表示距屏幕上边的距离,-y表示距屏幕下边的距离。(注意乘号是字母x)

root.geometry('500x300+750+350')

二、整体描述

在这里插入图片描述

三、常用组件功能列表

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

四、GUI应用程序类的经典写法

​ 本节程序也是GUI应用程序编写的一个主要结构,采用了面向对象的方式,更加合理的组织代码。
​ 通过类Application组织整个GUI程序,类Application继承了Frame,通过继承拥有了父类的特性。通过构造函数__init__()初始化窗口中的对象,通过createWidgets()方法创建窗口中的对象。
​ Frame框架是一个tkinter组件,表示一个矩形的区域。Frame一般作为容器使用,可以放置其他组件,从而实现复杂的布局。

"""测试一个经典的GUI程序写法,使用面向对象的方式"""

from tkinter import *
from tkinter import messagebox


class Application(Frame):
    """一个经典的GUI程序的类的写法"""

    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.pack()

        self.createWidget()

    def createWidget(self):
        """创建组件"""

        # 创建一个送花按钮
        self.btn01 = Button(self)
        self.btn01['text'] = '点击送花'
        self.btn01.pack()
        self.btn01['command'] = self.sendflower

        # 创建一个退出按钮
        self.btnQuit = Button(self, text='退出', command=self.master.destroy)
        self.btnQuit.pack()

    @staticmethod
    def sendflower():
        messagebox.showinfo('送花', '送你99朵玫瑰花')


if __name__ == '__main__':
    root = Tk()
    root.geometry('400x100+200+300')
    root.title('一个经典的GUI程序类的测试')
    app = Application(master=root)

    root.mainloop()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘学长丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值