首页 > Python资料 博客日记
python怎么做gui界面,python gui界面设计
2024-07-02 22:00:04Python资料围观122次
本篇文章给大家谈谈python怎么做gui界面,以及python gui界面设计,希望对各位有所帮助,不要忘了收藏本站喔。
Source code download: 本文相关源码
开发图形用户界面(GUI)应用程序是Python的重要应用之一,标准库tkinter用来实现图形用户界面。
tkinter模块是Python事实上的GUI库,包含在Python的基本安装包中python自学可行吗。
使用tkinter模块编写的GUI程序是跨平台的,可在多种操作系统中运行。
第一个tkinter GUI程序
组件和容器是GUI编程的两个基本概念。
● 组件是指标签、按钮、列表框等对象,需将其放在容器中显示。
● 容器是指可放置其他组件或容器的对象。
#带有标签和按钮的tkinter GUI程序
import tkinter #导入tkinter模块
win=tkinter.Tk() #创建主窗口对象
label1=tkinter.Label(win,text="Hello,Python") #创建标签对象
btn1=tkinter.Button(win,text='click') #创建按钮对象
label1.pack() #打包对象 使其显示在其父容器中
btn1.pack()
win.mainloop() #启动事件循环
tkinter GUI编程步骤
(1)导入tkinter模块。import tkinter 或 from tkinter import *
(2)创建主窗口对象,如果未创建主窗口对象,tkinter将以默认的顶层窗口作为主窗口。
(3)创建标签、按钮、输入文本框等组件对象。
(4)打包组件,将组件显示在其父容器中。
(5)启动事件循环,GUI窗口启动,等待响应用户操作。
import tkinter
from tkinter import*
设置窗口和组件的属性
设置窗口属性常用的方法有title()、geometry()和config()方法。
1. title()方法和geometry()方法
title()方法用于设置窗口的标题,geometry()用于方法设置窗口的大小。
geometry()方法中的参数格式为“宽度x高度” 。
#设置窗口标题和大小
from tkinter import * #导入tkinter模块
win=Tk() #创建主窗口对象
label1=Label(win,text="Hello,Python") #创建标签对象
btn1=Button(win,text='click') #创建按钮对象
label1.pack() #打包对象 使其显示在其父容器中
btn1.pack()
win.title("设置窗口标题和大小") # title()方法设置窗口标题
win.geometry("300x200") # geometry()方法设置窗口大小
win.mainloop() #启动事件循环
2. config()方法
config()方法用于设置组件文本、对齐方式、前景色、背景色、字体等属性。
#使用config()方法设置组件属性
from tkinter import * #导入tkinter模块
win=Tk() #创建主窗口对象
label=Label() #创建标签对象
label.config(text="Hello Python") #设置文本属性
label.config(fg="white",bg="blue") #设置前景和背景属性
label.pack() #打包对象 使其显示在其父容器中
btn1=Button() #创建按钮对象
btn1["text"]="click"
btn1.pack()
win.title("设置组件属性") # title()方法设置窗口标题
win.geometry("300x200") # geometry()方法设置窗口大小
win.mainloop() #启动事件循环
tkinter GUI的布局管理
● 容器中组件的布局是很繁琐的,需要调整组件自身的大小,还要设计和其他组件的相对位置。
● 实现组件布局的方法被称为布局管理器或几何管理器。
● tkinter使用三种方法来实现布局:pack()、grid()、place(),。
● Frame作为中间层的容器组件,可以分组管理组件,实现复杂的布局。
使用pack()方法的布局
pack()方法以块的方式布局组件。
pack()方法将组件显示在默认位置,是最简单、直接的用法。
pack()方法的参数:
side表示组件在容器中的位置;
· expand表示组件可拉伸;
· fill取值为X、Y或BOTH,填充X或Y方向上的空间;
· anchor表示组件在窗口中位置。
#使用pack()方法的side参数设置组件的布局
from tkinter import * #导入tkinter模块
win=Tk() #创建主窗口对象
label1=Label(win,text="Top标签",fg="white",bg="blue") #创建标签对象
label2=Label(win,text="Left标签",fg="white",bg="blue")
label3=Label(win,text="Bottom标签",fg="white",bg="blue")
label4=Label(win,text="Right标签",fg="white",bg="blue")
label1.pack(side=TOP) #打包对象 使其显示在其父容器中
label2.pack(side=LEFT)
label3.pack(side=BOTTOM)
label4.pack(side=RIGHT)
win.title("pack()方法") # title()方法设置窗口标题
win.geometry("200x150") # geometry()方法设置窗口大小
win.mainloop() #启动事件循环
#使用pack()方法的anchor参数设置组件的布局
from tkinter import * #导入tkinter模块
win=Tk() #创建主窗口对象
label1=Label(win,text="标签标题",fg="white",bg="blue") #创建标签对象
label1.pack(anchor=NW,padx=5)
label2=Label(win)
label2.config(text="标签内容",fg="white",bg="grey")
label2.pack(expand=YES,fill=BOTH,padx=5)
btn=Button()
btn["text"]="click"
btn.pack() #打包对象
win.title("anchor参数设置") # title()方法设置窗口标题
win.geometry("300x200") # geometry()方法设置窗口大小
win.mainloop() #启动事件循环
使用grid()方法的布局
使用grid()方法的布局被称为网格布局,它按照二维表格的形式,将容器划分为若干行和列,组件的位置由行列所在位置确定。
在同一容器中,只能使用pack()方法或grid()方法中的一种布局方式。
grid()方法的参数:
· row和column,组件所在的行和列的位置
· rowspan和columnspan,组件从所在位置起跨的行数和跨的列数
· sticky,组件所在位置的对齐方式
#使用grid()方法设置组件的布局
from tkinter import * #导入tkinter模块
win=Tk() #创建主窗口对象
label1=Label(win,text="请选择下列操作",fg="green") #创建标签对象
label1.grid(row=0,column=0,columnspan=4)
btn1=Button(text="copy")
btn2=Button(text="cut")
btn3=Button(text="paste")
btn4=Button(text="delete")
btn1.grid(row=2,column=0,padx=2)
btn2.grid(row=2,column=1,padx=2)
btn3.grid(row=2,column=2,padx=2)
btn4.grid(row=2,column=3,padx=2)
win.title("grid()方法设置") # title()方法设置窗口标题
win.geometry("200x150") # geometry()方法设置窗口大小
win.mainloop() #启动事件循环
使用place()方法的布局
比grid()和pack()布局更精确地控制组件在容器中的位置。
如果容器大小调整,可能会出现布局不适应的情况。
place()方法的参数
· x和y,用绝对坐标指定组件的位置
· height和width,指定组件的高度和宽度
· relx和rely,按容器高度和宽度的比例来指定组件的位置
· relheight和relwidth,按容器高度和宽度的比例来指定组件的高度和宽度
#使用place()方法设置组件的布局
from tkinter import * #导入tkinter模块
win=Tk() #创建主窗口对象
label1=Label(win,text="place()方法测试",fg="green") #创建标签对象
label1.place(x=140,y=50,anchor=N)
btn1=Button(text="place()按钮")
btn1.place(x=140,y=80,anchor=N)
btn2=Button(text="grid()按钮")
btn2.grid(row=2,column=1)
win.title("place()方法设置") # title()方法设置窗口标题
win.geometry("200x150") # geometry()方法设置窗口大小
win.mainloop() #启动事件循环
使用框架的复杂布局
框架( Frame)是一个容器组件,通常用于对组件进行分组
可以从而实现复杂的布局。
· bd 指定边框宽度
· relief 指定边框样式,取值为FLAT(扁平,默认值) 、RAISED(凸起)、 SUNKEN(凹 陷)、RIDGE(脊状)、GROOVE(凹槽)和 SOLID(实线)
· width和height 设置宽度或高度,如果忽略,容器通常根据内容组件的大小调整Frame大小
#使用Frame实现复杂布局
from tkinter import * #导入tkinter模块
win=Tk() #创建主窗口对象
frma=Frame() #框架frma
frmb=Frame() #框架frmb
frma.pack()
frmb.pack()
#添加两个标签和两个输入框
lblUname=Label(frma,text="UserName",width=10,fg="black")
etyUname=Entry(frma,width=20)
lblUname.grid(row=1,column=1)
etyUname.grid(row=1,column=2)
lblPwd=Label(frma,text="PassWord",width=10,fg="black")
etyPwd=Entry(frma,width=20)
lblPwd.grid(row=2,column=1)
etyPwd.grid(row=2,column=2)
#向容器中添加两个按钮
btnRest=Button(frmb,text="ReSet",width=10)
btnSubmit=Button(frmb,text="Submit",width=10)
btnRest.grid(row=1,column=1)
btnSubmit.grid(row=1,column=2)
win.title("Frame实现复杂布局") # title()方法设置窗口标题
win.geometry("300x150") # geometry()方法设置窗口大小
win.mainloop() #启动事件循环
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Windows上安装 Python 环境并配置环境变量 (超详细教程)