tkinter 框架学习笔记(简陋版本版)

Tkinter 框架学习

个人学习 Tkinter 框架写的简单笔记,大部分都是课堂上的截图。将就看看叭。

BiliBili链接:Python GUI编程

GUI Tkinter 框架结构

常用组件汇总列表

面向对象的方式写 GUI 框架的经典实例

image-20210704170309065

具体实现代码

#!/usr/bin/python python3
# coding=utf-8
'''
Author: whalefall
Date: 2021-07-04 16:50:10
LastEditTime: 2021-07-04 17:25:55
Description: 利用面向对象的方式写一个经典的 GUI 程序
'''
from tkinter import *
# Frame: 一个布局容器,里面可以放置组件.
from tkinter import Frame
# messagebox: 一个消息框组件
from tkinter import messagebox


class Application(Frame):
    '''
    通过 Application 类组织整个 GUI 程序,继承自 Frame.
    '''

    def __init__(self, master=None):
        '''
        初始化类,要传入根窗口对象.
        '''
        # 调用父类 Frame 的初始化方法
        super().__init__(master)
        # 将 master(传入的根窗口对象) 添加到 APP 类的属性
        # 使 self 拥有 root 根窗口对象的所有方法.
        self.master = master

        self.pack()  # 布局管理器,用于添加组件到布局
        # 创建各组件
        self.createWidget()

    def createWidget(self):
        '''
        创建一个组件,在初始化类中调用
        '''
        # 用父类的 Master 即 self 对象创建一个按钮组件
        self.btn1 = Button(self)
        self.btn1["text"] = "点击提交"  # 设置按钮文字属性
        self.btn1["command"] = self.lover  # 点击按钮所执行的函数
        self.btn1.pack()  # 添加到布局管理器

        # 创建一个退出按钮
        # command: 命令 (点击按钮要执行的函数)
        # root: 全局变量(根窗口)
        # destroy 方法: 消灭所有窗体(退出程序)
        self.btnQuit = Button(self, text="退出", command=root.destroy)
        self.btnQuit.pack()  # 添加到布局管理器

    def lover(self):
        '''
        点击 btn1 所执行的函数
        '''
        messagebox.showinfo("表白信息", "颖怡我喜欢你.")


if __name__ == "__main__":
    root = Tk()  # 创建主窗体
    root.geometry("400x100+200+300")  # 设置程序长宽位置
    root.title("面向对象经典 GUI 程序")

    app = Application(master=root)

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

label ( 标签 ) 用法

组件 Option 选项设置

选项大全

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GovysgTw-1640509977086)(https://cdn.jsdelivr.net/gh/AdminWhaleFall/Pic@master/img/20210705220646.png)]

Button Anchor 位置控制

Entry StrinngVar 输入框

输入框接收变量的类型

属性的双向关联

Text 多行文本框及复杂标记

image-20210706103446814

radio/check button 单选复选按钮

'''
构造组件
'''
# 单选框 RadiobButton
# 定义一个变量存放选择的值
# 单选按钮是两个组件对应一个变量
self.v = StringVar()
self.v.set("F")  # 设置默认值

# 设置提示文字,选中时的值,绑定的变量
self.r1 = Radiobutton(self, text="男性", value="男",
                      variable=self.v).pack(side="left")
self.r2 = Radiobutton(self, text="女性", value="女",
                      variable=self.v).pack(side="left")

Button(text="性别确定", command=self.get_xinbie).pack()

# self.label = Label(text="选择你喜欢的性别").pack()

# 复选框 CheckButton 需要两个变量
# IntVar: 整型,默认值为0
self.girlLove = IntVar()
self.boyLove = IntVar()

# 设置提示文字绑定变量
# onvalue: 选中时的值 offvalue: 不选时的值
self.c1 = Checkbutton(
    self, text="男孩子", variable=self.boyLove, onvalue=1, offvalue=0).pack()
self.c2 = Checkbutton(
    self, text="女孩子", variable=self.girlLove, onvalue=1, offvalue=0).pack()

Button(text="喜欢确定", command=self.get_love_xinbie).pack()

Canva 画板组件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rWIGYWWq-1640509977093)(https://cdn.jsdelivr.net/gh/AdminWhaleFall/Pic@master/img/20210706120307.png)]

Grid 网格布局管理器

image-20210706152318785

pack 布局管理器

钢琴页面设计

place 布局管理器

image-20210706162654707

通过pack布局管理器实现扑克牌界面

为扑克牌添加事件处理 (扩展)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RVK1X1nM-1640509977103)(C:\Users\WhaleFall\AppData\Roaming\Typora\typora-user-images\image-20210706164925218.png)]

重点:Tkinter 事件机制和消息循环处理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4mn5R8j0-1640509977104)(https://cdn.jsdelivr.net/gh/AdminWhaleFall/Pic@master/img/20210706165244.png)]

各种事件

image-20210706165639572

event 对象的常用属性

lambda 表达式

image-20210706174111186

lambda 事件传参的应用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W0IJTll4-1640509977107)(https://cdn.jsdelivr.net/gh/AdminWhaleFall/Pic@master/img/20210706174810.png)]

多种事件绑定方式的汇总

其他组件

1. OptionMenu 选项菜单组件

def createWiget(self):
    '''
    构造组件
    '''
    # OptionMenu: 选项菜单,传入父容器,绑定变量
    self.menu_v = StringVar()
    self.menu_v.set("黄颖怡")
    self.om = OptionMenu(self, self.menu_v, "黄颖怡", "ches")
    self.om["width"] = 30  # 设置属性
    self.om.pack()
    # 通过 lambda 匿名函数传参
    Button(text="提交", command=lambda: self.get_menu("hyy")).pack()

3. Scale 滑块组件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rJ1V1VaY-1640509977111)(https://cdn.jsdelivr.net/gh/AdminWhaleFall/Pic@master/img/20210706182141.png)]

4. 颜色选择框

image-20210706234159358

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MjAvhTf2-1640509977113)(https://cdn.jsdelivr.net/gh/AdminWhaleFall/Pic@master/img/20210706234432.png)]

5. 文件对话框

image-20210706234554285

image-20210707001859010

image-20210706234846614

6. 简单输入对话框 simpledialog

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1o4xVLFt-1640509977118)(https://cdn.jsdelivr.net/gh/AdminWhaleFall/Pic@master/img/20210706235630.png)]

7. 通用消息框 messagebox

image-20210706235857520

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tkyc4ImK-1640509977119)(https://cdn.jsdelivr.net/gh/AdminWhaleFall/Pic@master/img/20210706235922.png)]

8. 主菜单_上下文菜单

image-20210707000247204

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7OXONYht-1640509977122)(https://cdn.jsdelivr.net/gh/AdminWhaleFall/Pic@master/img/20210707000738.png)]

image-20210707000910424

image-20210707001019332
77118)]

[外链图片转存中…(img-Tkyc4ImK-1640509977119)]

8. 主菜单_上下文菜单

[外链图片转存中…(img-gOW7t5XH-1640509977120)]

[外链图片转存中…(img-QLvla2vS-1640509977121)]

[外链图片转存中…(img-7OXONYht-1640509977122)]

[外链图片转存中…(img-VgExkzIE-1640509977123)]

[外链图片转存中…(img-dqHyc1dX-1640509977123)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小 澜 同 学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值