Python -- GUI图形界面编程—GUI编程实例 博主也在持续学习中[ 持续更新中!!! 欢迎白嫖 ]

本文主要是介绍Python -- GUI图形界面编程—GUI编程实例 博主也在持续学习中[ 持续更新中!!! 欢迎白嫖 ],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 本文继上篇文章http://t.csdnimg.cn/mJlmW继续介绍GUI的图形界面编程(相关视频是哔站上的应该搜这个题目就能找到),文章还是很基础的,目前博主处于有一点基础的状态。

        文章的主要介绍了依旧非常重要的结构tinkter库、常见的三种布局管理器:Grid布局管理器、pack布局管理器、Place布局管理器;还有相关的小练习。依旧是很多代码部分是重复的,因为框架是固定的,跟着敲两遍就记住了,还是要动手。

感谢大佬持续支持!!既然路过就是缘分,点个赞吧!!

目录

12. Grid布局管理器详解

13. 计算器软件页面设计

14. pack布局管理器实现钢琴软件界面设计

15. Place布局管理器_绝对位置和相对位置

16. 扑克游戏界面设计_增加事件操作(练习place)

代码表示:

目录:


布局管理器简介:

tkinter提供了三种管理器:pack(组件的垂直或水平)、grid(表格布局【行和列 单元格】)、place(位置管理器,通过控制像素)

在Python中,特别是在使用图形用户界面(GUI)库如Tkinter、PyQt、PySide或Kivy时,布局管理器(Layout Managers)扮演着至关重要的角色。它们负责控制GUI组件(如按钮、文本框、标签等)的大小和位置,以确保用户界面在不同平台和屏幕尺寸上都能以一致且美观的方式呈现。

下面我将以Tkinter为例,详细解释几种常见的布局管理器,因为Tkinter是Python标准库的一部分,易于学习和使用。

### 1. Pack布局管理器

Pack布局管理器是最简单的布局管理器之一,它按照添加组件的顺序自动调整组件的位置和大小。默认情况下,它会将组件添加到容器的顶部,但你可以通过配置来改变方向(如`side=LEFT`、`side=RIGHT`等)。

```python
import tkinter as tk

root = tk.Tk()

button1 = tk.Button(root, text="Button 1")
button1.pack(side=tk.LEFT, padx=20, pady=20)

button2 = tk.Button(root, text="Button 2")
button2.pack(side=tk.RIGHT, padx=20, pady=20)

root.mainloop()
```

### 2. Grid布局管理器

Grid布局管理器将容器划分为一个二维的网格,你可以指定组件应该占据哪个网格位置(行和列)。Grid布局管理器非常适合需要表格或矩阵布局的场景。

```python
import tkinter as tk

root = tk.Tk()

label = tk.Label(root, text="Label")
label.grid(row=0, column=0, sticky=tk.W)

entry = tk.Entry(root)
entry.grid(row=0, column=1)

button = tk.Button(root, text="Submit")
button.grid(row=1, column=0, columnspan=2, sticky=tk.EW)

root.mainloop()
```

### 3. Place布局管理器

Place布局管理器提供了最大的灵活性,允许你通过指定组件的绝对位置(x和y坐标)和大小(宽度和高度)来放置组件。然而,这种灵活性也意味着你需要手动处理不同屏幕尺寸和分辨率的适配问题。

```python
import tkinter as tk

root = tk.Tk()

button1 = tk.Button(root, text="Button 1")
button1.place(x=50, y=50, width=100, height=50)

button2 = tk.Button(root, text="Button 2")
button2.place(x=160, y=50, width=100, height=50)

root.mainloop()
```

### 总结

- **Pack**:适合简单的垂直或水平布局。
- **Grid**:适合需要表格或矩阵布局的场景。
- **Place**:提供最大的灵活性,但需要手动处理不同屏幕尺寸的适配。

12. Grid布局管理器详解

代码表示:

import tkinter as tk
from tkinter import messagebox
​
class Application(tk.Frame):def __init__(self,master = None):super().__init__(master)self.master = masterself.pack()self.createWidgets()
​def createWidgets(self):"""通过grid布局实现登录页面"""self.label01 = tk.Label(self,text='用户名')self.label01.grid(row=0,column=0)self.entry01 = tk.Entry(self)self.entry01.grid(row=0,column=1)tk.Label(self,text='用户名为手机号').grid(row=0,column=2)
​tk.Label(self,text='密码').grid(row=1,column=0)tk.Entry(self,show='*').grid(row=1,column=1)
​tk.Button(self,text='登录').grid(row=2,column=1,sticky=tk.EW)tk.Button(self,text='取消').grid(row=2,column=2,sticky=tk.E)
​
​
if __name__ == '__main__':root = tk.Tk()      #创建根窗口对象root.geometry('400x200+200+200')app = Application(master=root)root.mainloop()         #事件循环

13. 计算器软件页面设计

# P13
from tkinter import *
from tkinter import messagebox
​
class Application(Frame):def __init__(self,master=None):super().__init__(master)self.master = masterself.pack()self.createWidgets()
​def createWidgets(self):btnText = [['MC','M+','M-','MR'],['C','±','/','×'],[7,8,9,'-'],[4,5,6,'+'],[1,2,3,'='],[0,'.']]
​Entry(self).grid(row=0,column=0,columnspan=4,pady=10)       #跨列 外边框为10
​for rindex,r in enumerate(btnText):for cindex,c in enumerate(r):if c == '=':Button(self,text=c,width=2)\.grid(row=rindex+1,column=cindex,rowspan=2,sticky=NSEW)elif c == 0:Button(self, text=c, width=2) \.grid(row=rindex + 1, column=cindex, columnspan=2, sticky=NSEW)elif c == '.':Button(self, text=c, width=2) \.grid(row=rindex + 1, column=cindex+1, sticky=NSEW)else:Button(self, text=c, width=2) \.grid(row=rindex+1, column=cindex, sticky=NSEW)     #因为有一行是Entry,所以是rindex+1
​
​
if __name__ == '__main__':# 创建根窗口对象root = Tk()root.geometry('450x250-200+200')app = Application(master=root)root.mainloop()     #事件循环

14. pack布局管理器实现钢琴软件界面设计

对于一下了解看看就行,pack()只适用于简单的排布垂直水平情况

代码表示:

# P14
from tkinter import *
​
root=Tk()
root.geometry('700x220')
​
# Frame是一个矩形区域,就是用来方式其他子组件的容器
f1 = Frame(root);f1.pack()
f2 = Frame(root);f2.pack()
​
btnText= ('流行风','复古风','摇滚风','R&B','欧美风','中国风')
​
for txt in btnText:Button(f1,text=txt,).pack(side='left',padx='10')
​
for i in range(1,10):Label(f2,width=5,height=10,borderwidth=1,relief='solid',bg='black' if i%2==0 else'white').pack(side='left',padx=2)
root.mainloop()

15. Place布局管理器_绝对位置和相对位置

place布局管理器可以通过坐标精确控制组件的位置,适用于一些布局更加灵活的场景。

代码表示:

from tkinter import *
​
root = Tk()
root.geometry('600x300')
root.title('place布局管理')
root['bg'] = 'white'
​
f1 = Frame(root,width=200,height=200,bg='green')
f1.place(x=30,y=30)
​
Button(root,text='zmr').place(relx=0.2,x=100,y=20,relwidth=0.2,relheight=0.5)       #x方向上相对于父元素0.2+100
Button(f1,text='加油!').place(relx=0.6,rely=0.7)
Button(f1,text='相信自己,哦~~~~').place(relx=0.5,rely=0.2)
root.mainloop()

16. 扑克游戏界面设计_增加事件操作(练习place)

代码表示:
P16
from tkinter import *
from tkinter import messagebox
​
class Application(Frame):def __init__(self,master = None):super().__init__(master)self.master = masterself.pack()self.createWidgets()
​def createWidgets(self):"""通过place布局管理器实现扑克牌位置控制"""self.photos = [PhotoImage(file='img/img_'+str(i)+'.png') for i in range(7)]self.imges = [Label(self.master,image=self.photos[i]) for i in range(7)]
​for i in range(7):self.imges[i].place(x=10+i*60,y=50)
​# 为所有的Lable添加事件处理self.imges[0].bind_class('Label','<Button-1>',self.chupai)
​def chupai(self,event):print(event.widget.winfo_geometry())print(event.widget.winfo_y())
​if event.widget.winfo_y() == 50:event.widget.place(y=30)else:event.widget.place(y=50)
​
if __name__ == '__main__':root = Tk()      #创建根窗口对象root.geometry('750x600+200+200')app = Application(master=root)root.mainloop()         #事件循环
项目列表:

这篇关于Python -- GUI图形界面编程—GUI编程实例 博主也在持续学习中[ 持续更新中!!! 欢迎白嫖 ]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1113723

相关文章

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核