Python GUI设计 tkinter module

news2024/11/16 13:44:57
  • Python GUI设计
    • GUI 设计可以大大简化你的工作
    • 编代码最头疼的内容就是
    • 你不能以超快的速度获得你想要的结果
      • 这是最头疼的
      • 尤其是你要调试的时候

tkinter module 中的属性与方法

创建窗口

root = tkinter.Tk()
root.title("GUI example")  # 设置窗口标题

.pack

  • pack方法是tkinter模块中常用的布局管理器之一,它会根据组件的添加顺序自动调整组件的位置和大小
    • 如果希望更精确地控制组件的位置和大小,可以考虑使用其他布局管理器 如 .grid 
import tkinter as tk

root = tk.Tk()
root.title("Pack example")

label1 = tk.Label(root, text="label 1")
label1.pack()

label2 = tk.Label(root, text="long long label 2")
label2.pack()

button1 = tk.Button(root, text="button 1")
button1.pack()

button2 = tk.Button(root, text="button 2")
button2.pack()


entry = tk.Entry(root)
entry.pack()

root.geometry("600x300")
root.mainloop()

 

 

Entry 

  • 提供一个输入框

.get()

import tkinter as tk

root = tk.Tk()
root.title("Entry example")

label = tk.Label(root, text="entry your name:")
label.pack()

entry = tk.Entry(root)
entry.pack()

# 定义按钮点击事件的函数
def submit():
    name = entry.get()  
    try:
        result_label.config(text=f"Hello, {name}!")
    except:
        result_label.config(text="entry your name:")

button = tk.Button(root, text="submit", command=submit)
button.pack()

result_label = tk.Label(root, text="")
result_label.pack()

root.geometry("600x300")
root.mainloop()

 

.insert()、.delete()和.config()

  • 使用.insert()方法,可以设置输入框的默认值
  • 使用.delete()方法,可以删除输入框中的内容
  • 使用.get()方法,可以获取输入框中的内容
  • 使用.config()方法和state参数,可以禁用或启用输入框
    • 禁用按钮的点击事件函数disable_entry()
      • 使用entry.config(state="disabled")来禁用输入框
    • 启用按钮的点击事件函数enable_entry()
      • 使用entry.config(state="normal")来启用输入框。

import tkinter as tk

root = tk.Tk()
root.title("Entry example")

entry = tk.Entry(root)
entry.pack()

entry.insert(0, "default text")

def clear_entry():
    entry.delete(0, tk.END)

def get_text():
    text = entry.get()
    print("entry:", text)

def disable_entry():
    entry.config(state="disabled")

def enable_entry():
    entry.config(state="normal")

button_clear = tk.Button(root, text="clear", command=clear_entry)
button_clear.pack()

button_get = tk.Button(root, text="get", command=get_text)
button_get.pack()

button_disable = tk.Button(root, text="disable", command=disable_entry)
button_disable.pack()

button_enable = tk.Button(root, text="enable", command=enable_entry)
button_enable.pack()

root.geometry("600x300")
root.mainloop()

 

添加标签

label = tkinter.Label(root, text="GUI example")
label.pack()
import tkinter as tk

root = tk.Tk()
root.title("Label example")

label = tk.Label(root)
label.pack()

label.config(font=("Arial", 20))
label.config(fg="white", bg="blue")
label.config(justify="center")
label.config(relief="solid", bd=2)
label.config(width=20, height=3)
label.config(text="Hello, Li Xu")

root.geometry("600x300")
root.mainloop()

  •  .config(text="Hello, CSDN!"):设置标签的文本内容
  • .config(font=("Arial", 20)):设置标签的字体为Arial,大小为20
  • .config(fg="white", bg="blue"):设置标签的前景色为白色,背景色为蓝色
  • .config(justify="center"):设置标签的对齐方式为居中对齐
  • .config(relief="solid", bd=2):设置标签的边框样式为实线边框,边框宽度为2
  • .config(width=20, height=3):设置标签的宽度为20个字符,高度为3行

添加按钮

  • 定义按钮点击事件处理函数
def button_click():
    messagebox.showinfo("tips", "button click")

button = tkinter.Button(root, text="click", command=button_click)
button.pack()
import tkinter as tk

root = tk.Tk()
root.title("Button example")

button = tk.Button(root, text="click ")
button.pack()

button.config(text="click")
button.config(fg="white", bg="blue")
button.config(font=("Arial", 16))
button.config(width=10, height=2)
button.config(relief="solid", bd=2)

# 设置按钮的命令函数
def button_click():
    print("has clicked!")

button.config(command=button_click)

button.config(state="normal")

root.geometry("600x300")
root.mainloop()

  •  .config(text):设置按钮的文本
  • .config(fg="white", bg="blue"):设置按钮的前景色为白色,背景色为蓝色
  • .config(font=("Arial", 16)):设置按钮的字体为Arial,大小为16
  • .config(width=10, height=2):设置按钮的宽度为10个字符,高度为2行
  • .config(relief="solid", bd=2):设置按钮的边框样式为实线边框,边框宽度为2
  • .config(command=button_click):设置按钮的命令函数为button_click,即当按钮被点击时执行button_click函数
  • .config(state="disabled"/"normal"):设置按钮的状态

.grid 方法 

  • row
  • column
  • columnspan
import tkinter as tk


root = tk.Tk()
root.title("Grid example")

label1 = tk.Label(root, text="label 1")
label1.grid(row=0, column=0)

label2 = tk.Label(root, text="long long label 2")
label2.grid(row=0, column=2)

button1 = tk.Button(root, text="button 1")
button1.grid(row=1, column=0)

button2 = tk.Button(root, text="button 2")
button2.grid(row=1, column=2)

button3 = tk.Button(root, text="button 3")
button3.grid(row=2, column=0)

button4 = tk.Button(root, text="button 4")
button4.grid(row=2, column=2)

entry = tk.Entry(root)
entry.grid(row=3, column=0, columnspan=4)

root.geometry("600x300")
root.mainloop()

 

filedialog module 

  • filedialog.askopenfilename()方法
    • 可以打开文件对话框来选择一个文件
    • 点击事件函数open_file_dialog()
      • filedialog.askopenfilename():显示文件选择对话框
      • initialdir:设置初始目录
      • title:设置对话框标题
      • filetypes:设置文件类型过滤器
      • 返回值:被选中的文件的路径
  • filedialog.asksaveasfilename()方法
    • 可以打开保存文件对话框来选择保存位置和文件名
    • 点击事件函数save_file_dialog()
      • filedialog.asksaveasfilename():显示保存文件对话框
      • defaultextension:设置默认文件扩展名
      • 返回值:选择的保存路径和文件名。
  • filedialog.askdirectory()方法
    • 可以打开选择文件夹对话框来选择一个文件夹
    • 点击事件函数select_directory_dialog()
      • filedialog.askdirectory():显示选择文件夹对话框
      • 返回值:被选中的文件夹的路径
         
import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.title("filedialog example")

def open_file_dialog():
    file_path = filedialog.askopenfilename(
        initialdir="/",
        title="select",
        filetypes=(("Text Files", "*.txt"), ("All Files", "*.*"))
    )
    print("select path:", file_path)

def save_file_dialog():
    file_path = filedialog.asksaveasfilename(
        initialdir="/",
        title="save",
        defaultextension=".txt",
        filetypes=(("Text Files", "*.txt"), ("All Files", "*.*"))
    )
    print("save paht:", file_path)

def select_directory_dialog():
    directory_path = filedialog.askdirectory(
        initialdir="/",
        title="select file folder"
    )
    print("folder path:", directory_path)

button_open = tk.Button(root, text="select file", command=open_file_dialog)
button_open.pack()

button_save = tk.Button(root, text="save file", command=save_file_dialog)
button_save.pack()

button_select_directory = tk.Button(root, text="select folder", command=select_directory_dialog)
button_select_directory.pack()

root.geometry("600x300")
root.mainloop()

 

 

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

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

相关文章

SOC FPGA之HPS模型设计(二)

根据SOC FPGA之HPS模型设计(一), Quartus工程经过全编译后会产生Handoff文件夹、SOPCINFO文件、SVD文件 二、生成Preloader镜像文件 通过信息交换文件Handoff文件生成Preloader,需要用到SOC EDS Preloader也被称为spl(Second Program Loader)或u-boot…

PLC-Recorder的高速采集有多快?0.5ms算快吗?看控制器能力了!

大家知道,PLC-Recorder有一个高速采集的功能,基于TCP连接或UDP报文,速度取决于发送端的能力。对于西门子PLC,能做到1-2ms的采集速度,但是,我在前面的文章里提到了0.5ms的高速采集,哪个控制器能这…

移动IP的原理

目的 使得移动主机在各网络之间漫游时,仍然能保持其原来的IP地址不变 工作步骤 代理发现与注册 主机A:主机A移动到外地网络后,通过“代理发现协议”,与外地代理建立联系,并从外地代理获得一个转交地址,…

YAML+PyYAML笔记 2 | YAML缩进、分离、注释简单使用

2 | YAML缩进、分离、注释简单使用 1 简介2 缩进3 分离4 多行文本4.1 折叠块4.2 字面块4.3 引用块 5 注释5.1 行内注释5.2 块注释5.3 完美注释示例 1 简介 YAML 不是一种标记语言,而是一种数据格式;使用缩进和分离来表示数据结构,不需要使用…

tauri在github上进行自动更新打包并发版过程,实战操作避坑

从网上找了很多很多的文章,结果还是入坑了,一个问题找了一天才解决: Error A public key has been found, but no private key. Make sure to set TAURI_PRIVATE_KEY environment variable. 596 ELIFECYCLE  Command failed with exit code…

Unbantu环境 Poetry下载安装,亲自测试过

一、下载安装 我使用pip来进行的安装,命令如下: pip install poetry通过上面步骤后,会在这个目录生产执行文件 /home/xxxx/./local/bin在这个目录下面,可以看到poetry文件。 成功后,需要配置环境变量 二、配置环…

Yolov8 引入ICCV 2023 | 南开大学提出LSKNet:遥感旋转目标检测新SOTA | 助力backbone

💡💡💡本文改进:Large Selective Kernel Network (LSKNet)通过一个空间选择机制来实现的,该机制对一连串的大 depth-wise 卷积核所处理的特征进行有效加权,然后在空间上将它们合并。这些核的权重是根据输入动态确定的,允许该模型自适应地使用不同的大核,并根据需要调…

音频深度学习变得简单:自动语音识别 (ASR),它是如何工作的

一、说明 在过去的几年里,随着Google Home,Amazon Echo,Siri,Cortana等的普及,语音助手已经无处不在。这些是自动语音识别 (ASR) 最著名的示例。此类应用程序从某种语言的语音音频剪辑开始&…

项目文档管理的基本指南

项目文档是一种关键的项目管理资源,它可以提供清晰度,保证参与项目的每个人都在同一页面上,从而确保项目按时、按预算完成。 本文将讨论项目文档的重要性、如何在项目中使用项目文档以及选择好合适的项目文档管理软件的技巧。 什么是项目文…

【C语言】位段枚举联合

鹅,鹅,鹅,曲项向天歌。白毛浮绿水,红掌拨清波。 — 唐代骆宾王《咏鹅》 这篇博客我们会详细介绍位段,以及枚举类型和联合类型 位段是什么?🍀 位段的声明和结构是类似的,有两个不同…

数据库数据恢复-导致oracle数据库数据丢失的常见故障分析

作为存储和处理数据的系统,oracle数据库在使用过程中不可避免会出现各种导致数据丢失和数据损坏的故障。北亚企安数据恢复工程师根据十多年的案例经验,总结出oracle数据库常见故障以及恢复可能性。 1、Oracle数据库无法启动或者启动后无法正常工作。 如果…

如何写一篇吸引人的美食营销软文?纯干货

信息化时代,美食营销软文已经成为了餐饮业吸引顾客的重要手段之一。那么,如何才能写出一篇吸引人的美食营销软文呢?本文伯乐网络传媒将从以下几个方面进行深刻讨论。 一、抓住顾客的心理需求 要写一篇成功的美食营销软文,首先要抓…

最新版Onenet云平台HTTP协议接入上传数据

2023年最新版Onenet更新后,原来的多协议接口已经找不到,由于需要用HTTP接入,就研究了一下新版Onenet云平台,搞清楚Onenet云平台的鉴权信息,就知道怎么上传数据了,包括后续上传实际数据,其实只需…

Jenkins 还可以支持钉钉消息通知?一个插件带你搞定!

Jenkins 作为最流行的开源持续集成平台,其强大的拓展功能一直备受测试人员及开发人员的青睐。大家都知道我们可以在 Jenkins 中安装 Email 插件支持构建之后通过邮件将结果及时通知到相关人员。 但其实 Jenkins 还可以支持钉钉消息通知,其主要通过 Ding…

800*A. Cherry

Example input 4 3 2 4 3 4 3 2 3 1 2 69 69 6 719313 273225 402638 473783 804745 323328output 12 6 4761 381274500335解析: 每次只计算相邻两个数的乘积,乘积的最大值即为答案。 取三个元素 a,b,c,那么其最大值…

Vue3 Radio单选切换展示不同内容

Vue3 Radio单选框切换展示不同内容 环境&#xff1a;vue3tsviteelement plus 技巧&#xff1a;v-if&#xff0c;v-show的使用 实现功能&#xff1a;点击单选框展示不同的输入框 效果实现前的代码&#xff1a; <template><div class"home"><el-row …

HuntingNFT 全新玩法引爆市场,GameFi掘金新热土?

“HuntingNFT v2 版本推出后&#xff0c;全新上线的驻守玩法、献祭玩法正在为玩家带来十分可观且持续的收益&#xff0c;其正在成为 GameFi 掘金的新热土。” 在经历了 2021 年的短暂狂欢后&#xff0c;随着 2022 年年初市场遇冷转熊&#xff0c;GameFi 市场也开始不断降温。根…

IDEA live templates

surround 在SQL的xml里 可以修改变量 官方文档 CDATA not null <if test"$SELECTION$ ! null and $SELECTION$ ! "> and $VAR1$ #{$SELECTION$} </if>not null like mysql <if test"$SELECTION$ ! null and $SELECTION$ ! "> and…

Gitlab 备份与恢复

备份 1、备份数据&#xff08;手动备份&#xff09; gitlab-rake gitlab:backup:create2、备份数据&#xff08;定时任务备份&#xff09; [rootlocalhost ]# crontab -l 00 1 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create 说明&#xff1a;每天凌晨1点备份数据…

WebDAV之π-Disk派盘 + POJO

POJO 支持WebDAV方式连接π-Disk派盘。 Pojo文档管理是一种简单而强大的文档管理方法,利用Java编程语言的普通对象来管理文档。你可以使用Pojo对象来表示和操作文档的属性、内容和元数据。这种面向对象的方法使得文档管理更加灵活和可扩展。 结合派盘,Pojo文档管理变得更加…