GUI 之 Tkinter编程

news2024/11/23 4:28:16

GUI 图形界面,Tkinter 是 Python 内置的 GUI 库,IDLE 就是 Tkinter 设计的。

1. Tkinter 之初体验

import tkinter as tk

root = tk.Tk()      # 创建一个窗口

root.title('窗口标题')

# 添加 label 组件
theLabel = tk.Label(root, text='文本内容')
theLabel.pack()     # 可自动调节组件尺寸

root.mainloop()     # 主事件循环

封装版

参数:

# 1. pack() 方法 side 参数:设置对齐方式,有 LEFT、RIGHT、TOP、TOTTOM 四个方位,默认 TOP
pack(side = tk.LEFT)

# 2. pack() 方法之 padx、pady 参数:自定义按钮偏移位置
pack(padx = 20, pady = 20)			# 偏移 x、y 20 个像素

# 3. 前景算、背景色设置
tk.Button(fg='blue', bg='red')
import tkinter as tk


class Bar:
    def __init__(self, root):
        frame = tk.Frame(root)      # 创建一个框架,里面添加一个 button 按钮,框架一般用于将组件分组
        frame.pack(side=tk.LEFT, padx=20, pady=20)

        # 创建一个按钮组件,fg(foreground 缩写,即前景色),command:调用函数
        self.that = tk.Button(frame, text='打招呼', fg='blue', command=self.sya_hi)
        self.that.pack(side=tk.LEFT)        # side: 对齐 LEFT、RIGHT、TOP、TOTTOM 四个方位,默认 TOP

    def sya_hi(self):
        print('大家好,我是 rose~')

root = tk.Tk()
b = Bar(root)

root.mainloop()

2. Label 组件

Label 组件用于界面输出描述的标签,一般用作提示。

Label() 部分参数:

  • justify:设置组件中文字对齐方式
  • padx、pady:组件与边框的距离
  • text:文本内容
  • font、fg、bg:文本字体、文字颜色、背景色
  • compound:CENTER,设置文本和图像混合模式(图像作为背景,文字在其上面)
  • textvariable:接收文本对象
# 创建一个文本 label 对象

var = StringVar()
var.set('你所下载的。。。')

theLabel = Label(textvariable=var, justify=LEFT)
theLabel.pack(side=LEFT)`
from tkinter import *

root = Tk()

textLabel = Label(root, text='你下载的影片含有未成年人限制内容,\n 请满18岁再观看!',
                  justify=LEFT, padx=10)
textLabel.pack(side=LEFT)   # 可自助调节自身尺寸

photo = PhotoImage(file='3.gif')    # 仅支持 gif 格式
imageLabel = Label(root, image=photo)
imageLabel.pack(side=RIGHT)

mainloop()

Tips: 图片仅支持 .gif 格式

设置背景图片

from tkinter import *

root = Tk()

photo = PhotoImage(file='3.gif')    # 仅支持 gif 格式

textLabel = Label(root, text='你下载的影片含有未成年人限制内容,\n 请满18岁再观看!',
                  justify=LEFT, padx=10, compound=CENTER, image=photo, font=('华康少女字体', 20), fg='blue')
textLabel.pack(side=LEFT)   # 可自助调节自身尺寸


mainloop()

3. Button 组件

Button 组件用于实现一个按钮,并且可以接收用户的输入信息。

Button() 参数:

  • command:指定一个函数或方法,当用户点击按钮时,自动调用这个函数。可用来接收用户输入的值
from tkinter import *


def func(*args, **kwargs):

    print(args, kwargs)

root = Tk()

frame1 = Frame()
frame2 = Frame()

# 创建一个文本 label 对象
var = StringVar()
var.set('你所下载的。。。')

theLabel = Label(frame1, textvariable=var, justify=LEFT)
theLabel.pack(side=LEFT)

# 创建一个图形 label 对象
photo = PhotoImage(file='3.gif')
imgLabel = Label(frame1, image=photo)
imgLabel.pack(side=RIGHT)

theButton = Button(frame2, text='已满', command=func)
theButton.pack()

frame1.pack(padx=10, pady=10)
frame2.pack(padx=10, pady=10)


mainloop()

4. CheckButton 组件

Checkbutton 多选按钮,RadioButton 单选按钮。

from tkinter import *


root = Tk()

# 定义一个变量,以确认该按钮是否被选中
v = IntVar()

c = Checkbutton(root, text='测试', variable=v)
c.pack()

# 选项被选中,v = 1,否则为 0
# 展示变量 v 的值
l = Label(root, textvariable=v)
l.pack()

mainloop()

四个选项

pack() 方法的 anchor 参数可用来设置选项对齐方式,共有八个方向(上北下南左西又东/ N、NE、E、SE、S、SW、W、NW)

from tkinter import *


root = Tk()

girls = ['西施', '王昭君', '貂蝉', '杨玉环']
v = []

for girl in girls:
    v.append(IntVar())
    b = Checkbutton(root, text=girl, variable=v[-1])
    b.pack(anchor=W)        # 设置左对齐

mainloop()

Menu 组件

from tkinter import *

root = Tk()

def callback():
    print('...')

menubar = Menu(root)

# 下拉菜单 "文件",添加到顶级菜单中
filemenu = Menu(menubar, tearoff=False)

filemenu.add_command(label='打开', command=callback)
filemenu.add_command(label='保存', command=callback)
filemenu.add_separator()
filemenu.add_command(label='退出', command=quit)

menubar.add_cascade(label='文件', menu=filemenu)

# 编辑下拉菜单
editmenu = Menu(menubar, tearoff=False)
editmenu.add_command(label='剪切', command=callback)
editmenu.add_command(label='拷贝', command=callback)
editmenu.add_command(label='粘贴', command=callback)

menubar.add_cascade(label='编辑', menu=editmenu)


root.config(menu=menubar)

mainloop()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/386005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习使用Android开发者者文档

Android Lint 错误信息中可看到不兼容代码所属的API级别。也可以在ANdroid开发者文档中查看各API级别特有的类和函数。 越早熟悉使用开发者文档越有利于开发,当然我们不可能记住所有的Android SDK中海量信息,因此学会查阅SDK文档,不断学习新的…

ContextLoaderListener监听器和SSM整合

ContextLoaderListener监听器Spring提供了监听器ContextLoaderListener,实现ServletContextListener接口,可监听ServletContext的状态,在web服务器的启动,读取Spring的配置文件,创建Spring的IOC容器。web应用中必须在w…

关于linux采用桥连接网络模式

关于linux(centos)采用桥连接网络模式 下载安装VmWare,并创建centos虚拟机 找到自己的虚拟机,点击编辑虚拟机设置-网络适配器-桥接模式 点击编辑-虚拟网络编辑器 点击更改设置-自动桥接 进入系统-修改网络配置文件 #进入到…

一个使用 react+vite3+ts+react-router-dom6v Hooks Admin搭建的轻量级后台管理模板。

react18-vite3-ts-antd4react-router-dom6v 前言 之所以搭这个模板,对于工作上业务需求老是变来变去,就觉得很烦,干脆搭了个admin模板,这样自己熟悉,好根据业务的需求进行一个修改。很多人会说后端管理系统模板都差不…

一文看懂REE OS、TEE OS、CA以及TA概念、架构、流程

目录 一、概念 二、使能方式 三、TEE软件框架 四、TEE软件流程 一、概念 REE(Rich Execution Environment):比如Android系统,是一个开放的环境,容易收到恶意软件的攻击,比如敏感数据被窃取、数字版权被…

Mask R-cnn 代码运行报错总结

Mask R-cnn 代码运行报错总结环境版本1. 数据集下载与参数配置2. 运行报错开始报错1报错2报错3报错4报错5报错6参考文章 文章1文章2 环境版本 TensorFlow 2.1.0Python 3.7keras 2.3.1 1. 数据集下载与参数配置 下载链接 https://github.com/matterport/Mask_RCNN/releases …

MySQL存储引擎详解及对比和选择

什么是存储引擎? MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善…

Java关键字、标识符、变量数据类型

文章目录关键字标识符标识符的命名规则标识符的命名规范变量变量的数据类型整数类型浮点类型浮点型精度字符类型布尔类型关键字 定义:被 Java 语言赋予了特殊含义,用做专门用途的字符串(或单词)HelloWorld 案例 中,出现…

7年测试工程师,裸辞掉17K的工作,想跳槽找更好的,还是太高估自己了....

14年大学毕业后,在老师和朋友的推荐下,进了软件测试行业,这一干就是7年时间,当时大学本来就是计算机专业,虽然专业学的一塌糊涂,但是当年的软件测试属于新兴行业,人才缺口比较大,而且…

南卡Neo骨传导运动耳机正式发布,打造音质最强款骨传导耳机

最近中国专业骨传导领先品牌NANK南卡发布全新Neo系列骨传导运动耳机,全新来袭的南卡Neo骨传导运动耳机主打音质使用体验,耳机配置上做到更为强劲升级优化,支持一体化机身,首发无线充设计,IPX6等级防水,升级…

Android---进程间通信机制2

Service Manager(SM):大管家。管理系统服务的 Ibinder。 1 如何启动 service_manager 服务 SM注册: 1 binder_open(): 打开驱动(设置大小128K),内存映射 2 binder_become_context_manager(): 设置 SM 为大管家 --- sm 作用:为…

【Python学习笔记】第二十六节 Python PyMySQL

一、什么是 PyMySQL?PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库。可以用它来连接Python和MySQL。如果你追求速度,这是一个很好的选择,因为它比mysql-connector-python快。PyMySQL 遵循 Python 数据库 API v2.0 规范&#x…

【存储】存储特性

存储特性精简配置技术(SmartThin)SmartThin主要功能容量虚拟化存储空间写时分配:Capacity-on-Write读写重定向:Direct-on-Time应用场景及配置流程存储分层技术(SmartTier)存储分层工作原理关键技术容量初始…

智能电子标签——商超版价签

2.1英寸TFT黑白电子价签 ★ 快速变价,高效运营 ★ 市场实用,布局物联网未来 ★ 更好客户体验 ★ 降低系统成本,具备竞争力 ★ 2.1英寸黑白红电子价签 ★ 电池低能耗,常规使用三年 ★ 穿透力强不慣障碍 ★ 2.4G载波&#x…

position:sticky 粘性定位

1、什么是粘性定位? 粘性定位它基于用户的滚动位置来定位。 粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。 它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position…

图机器学习-图神经网络

图神经网络 前面讲了图机器学习的一些传统方法,现在正式进入到课程的核心部分:图神经网络。 Design of GNN 那么图神经网络和我们之前接触的一些深度神经网络有什么不同呢? 对于别的类型的神经网络,往往我们都是处理一些类似网…

win环境nginx下载安装和基本操作使用解析

win环境nginx下载安装和基本操作是我们技术人员必备的技能,今天我们大概梳理一下: 下载 地址:nginx: download 进入后点击: 选择某个版本,就可以下载了,然后解压到某个目录,进入配置文件&…

RAM IP Core

官方文档:ZYNQ 存储资源指导手册 (DS109) RAM 全称 Random Access Memory,随机存取存储器。 随时将数据写入任意指定地址的存储单元,或从任意地址读出数据。读写的速度是由时钟频率决定的。 RAM主要用于存放程序运行的中间数据、运算结果等…

MySQL实战45讲深入浅出索引下

select * from T where k between 3 and 5这个语句的执行流程是: 在 k 索引树上找到 k3 的记录,取得 ID 300;再到 ID 索引树查到 ID300 对应的 R3;在 k 索引树取下一个值 k5,取得 ID500.再回到 ID 索引树查到 ID500 …

深度学习-第T1周——实现mnist手写数字识别

深度学习-第T1周——实现mnist手写数字识别深度学习-第P1周——实现mnist手写数字识别一、前言二、我的环境三、前期工作1、导入依赖项并设置GPU2、导入数据集3、归一化4、可视化图片5、调整图片格式四、构建简单的CNN网络五、编译并训练模型1、设置超参数2、编写训练函数六、预…