python tkinter 简介

news2024/9/20 15:42:44

ttk模块是tkinter模块中非常重要的模块,相当于升级版的tkinter模块。

ttk模块包含18个组件,其中12个组件在tkinter模块中已经存在。这12个模块分别为Button(按钮)​、Checkbutton(复选框)​、Entry(文本框)​、Frame(容器)​、Label(标签)​、LabelFrame(标签容器)​、Menu(菜单)​、PaneWindow(窗口布局管理)​、Radiobutton(单选按钮)​、Scale(数值范围)​、Spinbox(含选择值的输入框)及Scrollbar(滚动条)组件。而其余6个组件是ttk模块独有的,它们分别是Combobox(组合框)​、Notebook(选项卡)​、Progressbar(进度条)​、Separator(水平线)​、Sizegrip(成长箱)和Treeview(目录树)​。

from tkinter import *  #导入tkinter模块
win=Tk()  #实例化一个窗口
win.title("这是一个ttk的小demo")  #添加窗口标题

#添加按钮组件,然后设置样式,text :按钮上的文字,font:设置字号,relief  设置边框样式
# bg :设置背景色,pack :包装按钮,目的是让按钮显示在窗口上

btn=Button(win,text='这只是一个按钮',font=12,relief='flat',bg='#00f5ff').pack(pady=20)
# btn=Button(win,text='这只是一个按钮',font=12,relief='flat',bg='#00f5ff')

win.mainloop()  #让程序继续执行,直到窗口被关闭

from tkinter import *
from tkinter.ttk import *
import tkinter
root=Tk()  #创建根窗口
root.title('这是一个ttk的小demo')

style=Style()  #创建Style 对象,便于设置样式
# 设置样式,其四个参数分别为样式添加标签,设置字号,设置组件的边框样式,设置背景色
style.configure('TButton',font=12,relief='flat',background='#00f5ff')
# 添加Button组件,text定义组件上的文字,style为组件引入样式
btn=tkinter.ttk.Button(text='这只是个按钮',style='TButton').pack(pady=20)

root.mainloop()

tkinter窗口设计

tkinter模块的所有组件和ttk模块的组件都被放在tkinter窗口中。

tkinter的核心就是组件,组件可以分为  文本类组件、按钮类组件、选择列表组件、容器类组件、会话类组件、菜单类组件、进度条组件

文本类组件

  • Label:标签组件,用于显示文本,添加提示信息
  • Entry:单行文本组件,只能添加单行文本,不能换行
  • Text :多行文本组件,可以添加多行文本
  • Spinbox: 输入组件。可以输入内容,也可以直接从现有的选项中选择内容
  • Scale:数字范围组件,为用户拖动滑块选择数值

按钮类组件

  • Button:按钮组件。通过单击按钮可以执行某些操作
  • Radiobutton:单选框组件。 允许用户在众多选项中选择一个
  • Checkbutton:复选框组件。允许多选

选择列表类组件

  • Listbox:列表框组件。将众多选项排列,让用户选择
  • Scrollbar:滚动条组件,可以绑定其他组件,当其他组件内容溢出显示滚动条
  • OptionMenu:下拉列表
  • Combobox:组合框

容器类组件

  • Frame:框架组件。将相关组件放在一起,便于管理
  • LabelFrame:标签框架组件,将相关的组件放在一起,并给它们一个特定的名称
  • Toplevel:顶层窗口。重新打开一个窗口,显示在根窗口的上方
  • PaneWindow:窗口布局管理
  • Notebook:选项卡,选择不同的内容

会话类组件

  • Message:消息框,为用户显示一些短消息
  • Messagebox:对话框

菜单类组件

  • Menu:菜单组件
  • Toolbar:工具栏
  • Treeview:树菜单

进度条组件

  • Progressbar :添加进度条

组件的公共属性

虽然每个组件都有各自的属性,但有些属性是通用。

fg:组件文字的颜色
bg:组件的背景色
font:文字的样式
#relief:组件的边框样式
cursor:鼠标悬停在组件上时候的样式

组件的公共方法

config():为组件配置参数

keys() :获取组件的所有参数,并返回一个列表

from tkinter import *

win=Tk()  #通过Tk()方法实例化一个根窗口
# 设置窗口属性  创建一个窗口之后,可以通过一系列的方法设置窗口样式,包括窗口大小、背景等

"""
title() 设置窗口的标题
geometry(),设置窗口的大小和位置
maxsize() 设置窗口的最大尺寸
minsize() 设置窗口的最小尺寸
configure(bg=color) 设置背景色

iconbitmap() 设置窗口的默认图标

"""

win.title('tkinter的初级使用')  #添加窗口标题
scrw=win.winfo_screenwidth()  #获取屏幕宽度
scrh=win.winfo_screenheight() #获取屏幕高度
winw=300  #窗口宽
winh=220
x=int((scrw-winw)/2)
y=int((scrh-winh)/2)
win.geometry("{}x{}+{}+{}".format(winw,winh,x,y)) #设置窗口的大小和位置
win.configure(bg='red') #设置窗口的背景色

#anchor 属性是调整文字在组件中的位置,nw 左上角  padx  文字与组件边缘的间距
txt=Label(win,text='\n i love you ',fg='red',bg='#C3DEEF',width=20,height=3,anchor='nw').pack()  #在窗口中添加一行文字
# txt=Label(win,text='\n i love you ',fg='red',bg='#C3DEEF',width=20,height=3,padx=20,pady=10).pack()  #在窗口中添加一行文字

h=Label(win,text='我爱你')
h.config(bg='red')
print(h.keys())
h.pack()
win.mainloop()  #等待与处理窗口事件   mainloop()方法让程序循环执行,并且等待与处理事件。mainloop()方法负责监听各个组件,当组件发生变化,或者触发事件,立即更新窗口

 

tkinter 布局管理

pack()方法

side 参数用于设置组件的水平展示或者垂直展示

from tkinter import *
win=Tk()

"""
side:该参数用于设置组件水平展示或者垂直展示,主要有4个属性值。
➢ top:指组件从上到下依次排列,这是side参数的默认值。
➢ bottom:指组件从下到上依次排列。
➢ left:指组件从左到右依次排列。
➢ right:指组件从右到左依次排列。
"""
txt1='第一行文字'
txt2='第二行文字'
txt3='第三行文字'
txt4='第四行文字'
txt5='第五行文字'
txt6='第六行文字'

Label(win,text=txt1,bg='yellow').pack(side='left')
Label(win,text=txt2,bg='#EDB584').pack(side='top')
Label(win,text=txt3,bg='#EF994C').pack(side='left')
Label(win,text=txt4,bg='#EF999C').pack(side='top')
Label(win,text=txt5,bg='#EF989C').pack(side='left')
Label(win,text=txt6,bg='#EF979C').pack(side='left')

win.mainloop()

padx和pady  设置组件边界距离父容器边界的距离,单位为像素

 ipadx和ipady:设置组件内文字距离组件边界的距离,单位为像素

from tkinter import *
win=Tk()

txt1='第一行文字'
txt2='第二行文字'
txt3='第三行文字'

# padx和pady:设置组件边界距离父容器边界的距离,单位为像素
# ipadx和ipady:设置组件内文字距离组件边界的距离,单位为像素

Label(win,text=txt1,bg='yellow').pack(side='left',padx=20,pady=50,ipadx=0,ipady=0)
Label(win,text=txt2,bg='#EDB584').pack(side='top',padx=0,pady=50,ipadx=0,ipady=0)
Label(win,text=txt3,bg='#EF994C').pack(side='left',padx=0,pady=5,ipadx=0,ipady=0)

win.mainloop()

from tkinter import *
win=Tk()

txt1='第一行文字'
txt2='第二行文字'
txt3='第三行文字'

# padx和pady:设置组件边界距离父容器边界的距离,单位为像素
# ipadx和ipady:设置组件内文字距离组件边界的距离,单位为像素

Label(win,text=txt1,bg='yellow').pack(side='left',padx=10,pady=5,ipadx=6,ipady=4)
Label(win,text=txt2,bg='#EDB584').pack(side='left',padx=50,pady=5,ipadx=6,ipady=4)
Label(win,text=txt3,bg='#EF994C').pack(side='left',padx=10,pady=5,ipadx=6,ipady=4)

win.mainloop()

grid()方法

grid()类似与Excel表格中的网格布局

from tkinter import *
win=Tk()

#☑ row,column:定义组件所在的行和列。
# 这是grid()网格布局方法中比较重要的两个参数,如果省略,则使用默认值“row=0,column=0”,而单元格的大小取决于最大的组件的宽度。

Label(win,text='1*1=1',bg='yellow').grid(row=0,column=0,padx=10)
Label(win,text='1*2=2',bg='yellow').grid(row=1,column=0,padx=10)
Label(win,text='1*3=4',bg='yellow').grid(row=2,column=0,padx=10)
Label(win,text='1*4=4',bg='yellow').grid(row=3,column=0,padx=10)

Label(win,text='2*2=4',bg='yellow').grid(row=1,column=1,padx=10)
Label(win,text='2*3=6',bg='yellow').grid(row=2,column=1,padx=10)
Label(win,text='2*4=8',bg='yellow').grid(row=3,column=1,padx=10)

# rowconfigure()方法和columnconfigure()方法改变某行或某列组件所占空间随窗口缩放的比例
win.rowconfigure(0,weight=1) #设置第一行的组件缩放比例为1
win.columnconfigure(1,weight=1) #设置第二行的组件缩放比例为1

win.mainloop()

place()方法

place()方法可以设置组件的大小及组件在容器中的精确位置

place()方法可以使用两种方式来设置组件的大小及位置,第一种是通过参数x、y、width和height设置组件的大小和位置;第二种是通过参数relx、rely、relwidth和relheight设置组件的大小和位置

from tkinter import *
win=Tk()

"""
place()方法可以使用两种方式来设置组件的大小及位置,第一种是通过参数x、y、width和height设置组件的大小和位置;
第二种是通过参数relx、rely、relwidth和relheight设置组件的大小和位置
"""
win.title('华容道')
win.geometry('240x300')
txt1 =Label(win,text='赵云',bg='#93edd4',relief='groove',font=14)
txt2 =Label(win,text='曹操',bg='#93edd4',relief='groove',font=14)
txt3 =Label(win,text='黄忠',bg='#93edd4',relief='groove',font=14)
txt4=Label(win,text='张飞',bg='#93edd4',relief='groove',font=14)
txt5=Label(win,text='关羽',bg='#93edd4',relief='groove',font=14)
txt6=Label(win,text='马超',bg='#93edd4',relief='groove',font=14)
txt7=Label(win,text='卒',bg='#93edd4',relief='groove',font=14)
txt8=Label(win,text='卒',bg='#93edd4',relief='groove',font=14)
txt9=Label(win,text='卒',bg='#93edd4',relief='groove',font=14)
txt0=Label(win,text='卒',bg='#93edd4',relief='groove',font=14)

# # windth 为组件宽度,height为组件高度,x,y为组件左上角坐标
# txt1.place(width=60,height=120,x=0,y=0)
# txt2.place(width=120,height=120,x=60,y=0)
# txt3.place(width=60,height=120,x=180,y=0)
# txt4.place(width=60,height=120,x=0,y=120)
# txt5.place(width=120,height=60,x=60,y=120)
# txt6.place(width=60,height=60,x=180,y=120)
# txt7.place(width=60,height=60,x=60,y=180)
# txt8.place(width=60,height=60,x=120,y=180)
# txt9.place(width=60,height=60,x=0,y=240)
# txt0.place(width=60,height=60,x=180,y=240)

# 布局跟随窗口缩放的华容道游戏窗口
txt1.place(relwidth=0.25,relheight=0.4,relx=0,rely=0)
txt2.place(relwidth=0.5,relheight=0.4,relx=0.25,rely=0)
txt3.place(relwidth=0.25,relheight=0.4,relx=0.75,rely=0)
txt4.place(relwidth=0.25,relheight=0.4,relx=0,rely=0.4)
txt5.place(relwidth=0.5,relheight=0.2,relx=0.25,rely=0.4)
txt6.place(relwidth=0.25,relheight=0.2,relx=0.75,rely=0.4)
txt7.place(relwidth=0.25,relheight=0.2,relx=0.25,rely=0.6)
txt8.place(relwidth=0.25,relheight=0.2,relx=0.5,rely=0.6)
txt9.place(relwidth=0.25,relheight=0.2,relx=0,rely=0.8)
txt0.place(relwidth=0.25,relheight=0.2,relx=0,rely=0.8)

win.mainloop()

 

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

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

相关文章

OrangePi AIpro 香橙派 昇腾 Ascend C 算子开发 与 调用 - 通过aclnn调用的方式调用AddCustom算子

OrangePi AIpro 香橙派 昇腾 Ascend C 算子开发 与 调用 通过aclnn调用的方式调用 - AddCustom算子 - 单算子API执行(aclnn) 多种算子调用方式 *开发时间使用场景调用方式运行硬件基于Kernel直调工程(快速)少单算子调用,快速验证算法逻辑IC…

MySQL复习3

视图 视图(view)是一种虚拟存在的表,是一个逻辑表,本省没有数据,内容由查询定义。 基表:用来创建视图的表叫做基表 通过视图,我们可以查看基表的部分数据。视图数据来自定义视图的查询中使用…

[Go]-抢购类业务方案

文章目录 要点:1. 抢购/秒杀业务的关键挑战2. 技术方案3.关键实现点4.性能优化建议5.其他考虑因素 细节拆分:1. **高并发处理**2.**限流与防护**3.**库存控制**4. **异步处理**5. **数据一致性**6. **常用架构设计**7. **代码示例**8. 进一步优化9. 注意…

鸿蒙(API 12 Beta6版)图形加速【OpenGL ES平台内插模式】超帧功能开发

超帧内插模式是利用相邻两个真实渲染帧进行超帧计算生成中间的预测帧,即利用第N-1帧和第N帧真实渲染帧预测第N-0.5帧预测帧,如下图所示。由于中间预测帧的像素点通常能在前后两帧中找到对应位置,因此内插模式的预测帧效果较外插模式更优。由于…

android studio 模拟器 loadlibrary failed with 126:找不到指定的模块

loadlibrary failed with 126:找不到指定的模块 解决方法 解决方法:设备管理器-> 显示适配器-> 禁用 AMD Redeon 重启AndroidStudio

【学习笔记】 陈强-机器学习-Python-Ch14 支持向量机

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-…

示波器在嵌入式中的作用和使用

你是否在开发嵌入式系统时,遇到过调试电路和信号分析的困难? 在嵌入式开发中,硬件调试和信号分析是必不可少的环节,而示波器作为一种强大的工具,能够帮助我们深入了解信号特性并解决难题。那么,如何正确使用…

Aigtek功率放大器可以驱动哪些传感器设备

功率放大器是一种电子设备,主要用于将输入信号增强到更高的功率级别并驱动各种负载。在传感器应用中,功率放大器可以用来驱动多种传感器设备,下面将介绍几个常见的应用场景。 光学传感器:光学传感器是一类基于光学原理工作的传感器…

Django发送邮件

【图书介绍】《Django 5企业级Web应用开发实战(视频教学版)》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 Django 5框架Web应用开发_夏天又到了的博客-CSDN博客 本文学习怎么使用Django发送邮件。 尽管使用Python的smtplib模块发送电子邮件…

Flutter集成Firebase中的Remote Config

远程配置(Remote Config)的功能 动态配置参数:Remote Config 允许您在不更新应用程序的情况下,实时更改应用程序的参数,如文本、颜色、布尔值等条件化参数:您可以基于用户的特定条件(例如用户地…

ADC——模数转换器

一、转换流程 在处理器中主要进行ADC 1、AD转换流程 :采样、保持、量化、编码 通过比较器获得的电信号转换数字信号,根据自己需求,如果要求速率就可以使用较多的比较器,不要求速率考虑成本就可以使用较少的比较器,将最…

【Oracle篇】全面理解优化器和SQL语句的解析步骤(含执行计划的详细分析和四种查看方式)(第二篇,总共七篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…

828华为云征文 | Flexus X实例CPU、内存及磁盘性能实测与分析

引言 随着云计算的普及,企业对于云资源的需求日益增加,而选择一款性能强劲、稳定性高的云实例成为了关键。华为云Flexus X实例作为华为云最新推出的高性能实例,旨在为用户提供更强的计算能力和更高的网络带宽支持。最近华为云828 B2B企业节正…

AFSim仿真系统---向导参考指南 (1)

向导参考指南 向导参考指南列出了包含在向导中的功能&#xff0c;并按各种类别进行了组织。 启动 命令行选项 1 命令行参数 - 向导 用法&#xff1a; wizard.exe [ <file_name.txt> ][ <project_file.afproj> ]{ -console } <file_name1.txt> <file_n…

QT:QWidget 控件属性的介绍

控件属性介绍 &#x1f334;enabled 状态属性&#x1f334;geometry 几何属性示例一&#xff1a;改变控件尺寸示例二&#xff1a;更变控件位置window frame 的影响 &#x1f334;windowTitle 窗口标题&#x1f334;windowIcon 窗口图标&#x1f334; qrc机制&#x1f334;windo…

DevExpress WinForms v24.1新版亮点:功能区、数据编辑器全新升级

DevExpress WinForms拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜…

CMAQ 5.4 输入与输出数据

CMAQ 5.4 输入与输出数据 参考 CMAQ输入文件.https://github.com/USEPA/CMAQ/blob/main/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md CMAQ输出文件.https://github.com/USEPA/CMAQ/blob/main/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md 目录 文章目录 CMAQ 5.4 输…

企业如何组建安全稳定的跨国通信网络?

组建一个安全稳定的跨国通信网络对于现代企业来说至关重要&#xff0c;尤其是当企业在全球范围内运营时。以下是一些关键步骤和考虑因素&#xff1a; 需求分析&#xff1a; 确定企业的具体通信需求&#xff0c;包括带宽要求、延迟敏感度、数据类型&#xff08;如语音、视频、文…

Sobel边沿检测

前言 Sobel边沿检测是一种用于图像处理的边缘检测技术。它通过计算图像的梯度来识别图像中的边缘。Sobel算子是一种常用的边缘检测滤波器&#xff0c;它利用两个卷积核来分别检测水平和垂直方向的边缘。Sobel边沿检测在很多图像处理应用中都很有用&#xff0c;比如图像分割、目…

SpringBoot 集成 PDFBox 实现电子签章

Apache PDFBox 是一个开源的 Java 库&#xff0c;用于处理 PDF 文档。它提供了一系列强大的功能&#xff0c;包括创建、渲染、拆分、合并、加密、解密 PDF 文件&#xff0c;以及从 PDF 中提取文本和元数据等。PDFBox 支持 PDF 1.7 标准&#xff0c;并且兼容大多数现代 PDF 格式…