Python之GUI编程

article/2025/9/23 13:23:09

一、常用的GUI库

  1. Tkinter:tkinter(Tk interface)是Python的标准GUI库,支持跨平台的GUI程序开发,tkinter适合小型的GUI程序编写,也特别适合初学者学习GUI编程。
  2. wxPython:wxPython是比较流行的GUI库,适合大型应用程序开发,功能强宇tkinter,整体设计框架类似于MFC(Microsoft Foundation Classes  微软基础类库)
  3. PyQT:Qt是一种开源的GUI库,适合大型GUI程序开发,PyQT是Qt工具包标准的Python实现。我们也可以使用Qt Desginer 界面设计器快速开发GUI应用程序。

基于tkinter模块创建GUI程序包括如下4个核心步骤:

  1. 创建应用程序主窗口对象(也称:根窗口):通过类Tk的无参构造函数
  2. 在主窗口中,添加各种可视化组件,比如:按钮(Button)、文本框(Label)等。
  3. 通过几何布局管理器,管理组件的大小和位置
  4. 事件处理:通过绑定事件处理程序,响应用户操纵所触发的事件(比如:单击、双击等)

操作如下:

from tkinter import *
from tkinter import messagebox
root = Tk()
btn01=Button(root)
btn01["text"]="点我就送花"
btn01.pack()
def songhua(e):       #e就是事件对象messagebox.showinfo("Message","送你一朵玫瑰花")print("送你99朵玫瑰花")
btn01.bind("<Button-1>", songhua)
root.mainloop()       #调用组件的mainloop()方法,进入事件循环

二、主窗口位置和大小

通过geometry('wxh ±x ±y‘)进行设置。w为宽度,h为高度,+x表示距屏幕左边的距离,-x表示据屏幕右边的距离,+y表示距屏幕上边的距离,-y表示距屏幕下边的距离。

root = Tk()
root.title("我的第一个GUI程序")
root.geometry("500x300+100+200")

实验:测试GUI程序的类的对象:

"""测试一个经典的GUI程序的写法,使用面向对象的方式"""
from tkinter import *
from tkinter import messagebox
class Application(Frame):"""一个经典的GUI程序的类的写法"""def __init__(self, master=None):super().__init__(master)      #super()代表的是父类的定义,而不是父类对象self.master=masterself.pack()self.createWidget()def createWidget(self):"""创建组件"""self.btn01 = Button(self)self.btn01["text"] = "点击送花"self.btn01.pack()self.btn01["command"] =self.songhua# 创建一个退出按钮self.btnQuit= Button(self, text="退出", command=root.destroy)self.btnQuit.pack()def songhua(self):messagebox.showinfo("送花","送你99朵玫瑰花")
root=Tk()
root.geometry("400x100+200+300")
root.title("一个经典的GUI程序类的测试")
app = Application(master=root)
root.mainloop()

三、label标签

Label(标签)主要用于显示文本信息,也可以显示图像

Label(标签)有这些常见的属性:

  1. width,height:用于指定区域大小,如果显示是文本,则以单个英文字符大小为单位(一个汉字占2个字符位置);如果显示的是图像,则以像素为单位,默认值是根据具体显示的内容动态调整。
  2. font:指定字体和字体大小,如:font = (font_name,size)
  3. image:显示在Label上的图像,目前tkinter只支持gif格式
  4. fg和bg:fg(foreground):前景色、bg(background):背景色
  5. justify:针对多行文字的对齐,可设置justify属性,可选值”left“,”center“和”right"

四、Options选项详解

  1. 创建对象时,使用命名参数(也叫关键字参数)

 fred=Button(self, fg="red", bg="blue")

     2.创建对象后,使用字典索引方式

fred["fg"]= "red" 

fred["bg"] = "blue"

    3. 创建对象后,使用 config()方法

fred.config(fg="red", bg="blue")

五、 Button

Button(按钮)用来执行用户的单击操作,Button可以包含文本,也可以包含图像,按钮被单击后会自动调用对应事件绑定的方法。

六、Entry单行文本框

Entry用来接收一行字符串的控件,如果用户输入的文字长度长于Entry控件的宽度时,文字会自动向后滚动,如果想输入多行文本,需要使用Text控件。

"""测试Entry组件的基本用法,使用面向对象的方式"""
from tkinter import *
from tkinter import messagebox
class Application(Frame):"""一个经典的GUI程序的类的写法"""def __init__(self, master=None):super().__init__(master)      #super()代表的是父类的定义,而不是父类对象self.master=masterself.pack()self.createWidget()def createWidget(self):"""创建登录界面的组件"""self.label01 = Label(self,text="用户名")self.label01.pack()#StringVar变量绑定到指定的组件#StringVar变量的值发生变化,组件内容也变化#组件内容发生变化,StringVar变量的值也发生变化。v1=StringVar()self.entry01=Entry(self,textvariable=v1)self.entry01.pack()v1.set("admin")print(v1.get());print(self.entry01.get())#创建密码框self.label02=Label(self,text="密码")self.label02.pack()v2 = StringVar()self.entry02 = Entry(self, textvariable=v2,show="*")self.entry02.pack()Button(self,text="登录",command=self.login).pack()def login(self):print("用户名:"+self.entry01.get())print("密码:" + self.entry02.get())messagebox.showinfo("学习系统","登录成功!欢迎开始学习!")
if __name__=='__main__':root = Tk()root.geometry("400x130+200+300")app=Application(master=root)root.mainloop()

七、Text多行文本框

Text(多行文本框)的主要用于显示多行文本,还可以显示网页链接,图片,HTML页面,甚至CSS样式表,添加组件等,因此,也常被当做简单的文本处理器,文本编辑器或者网页浏览器来使用。比如IDLE就是Text组件组成的。

八、Radiobutton单选按钮与Checkbutton复选按钮

Radiobutton控件用于选择同一组单选按钮中的一个。Radiobutton可以显示文本,也可以显示图像。

Checkbutton控件用于选择多个按钮的情况。Checkbutton可以显示文本,也可以显示图像。

九、canvas画布

canvas(画布)是一个矩形区域,可以放置图形,图像,组件等。

十、布局管理器

grid布局管理器:grid表格布局,采用表格结构组织组件。子组件的位置由行和列的单元格来确定,并且可以跨行和跨列,,从而实现复杂的布局。

grid()方法提供的选项

选项说明取值范围
column单元格的列号从0开始的正整数
columnspan跨列,跨越的列数正整数
row单元格的行号从0开始的正整数
rowspan跨行,跨越的行数正整数
ipadx、ipady设置子组件之间的间隔,x方向或者y方向,默认单位为像素非负浮点数,默认0.0
padx、pady与之并列的组件之间的间隔,x方向或者y方向,默认单位为像素非负浮点数,默认0.0
sticky组件紧贴所在单元格的某一角,对应于东南西北中以及4个角“n“,”s“,”w“,”e“,”nw“,”sw“,”se“,”ne“,”center“(默认)


http://chatgpt.dhexx.cn/article/Idh1kJyJ.shtml

相关文章

快速入门GUI-guider

快速入门GUI-guider&#xff08;本教程基于LVGL-v8.20&#xff09; 前言一、什么是GUI Guider&#xff1f;二、使用教程1.下载软件2.熟悉LVGL各种组件3.新建工程4.上手体验5.代码移植 完结撒花 前言 本教程要基于有移植好的LVGL—8.2.0的代码为基础&#xff0c;对于不懂怎么移…

Python-GUI界面设计(tkinter)

文章目录 前言一、函数方法二、导入三、窗口[1]. 创建[2]. 标题[3]. 大小[4]. 背景[5]. 删除 四、按钮[1]. 创建[2]. 放置&#xff08;绝对位置&#xff09;[3]. 放置&#xff08;相对位置&#xff09;[4]. 代码 五、单行文本[1]. 创建[2]. 代码 六、多行文本[1]. 创建[2]. 获取…

GUI编程

一&#xff0c;简介 GUI编程(Graphical User Interface)&#xff0c;即用户图形界面编程。 GUI淘汰原因&#xff1a;界面不够美观&#xff0c;需要jre环境。 学习GUI的好处&#xff1a;1&#xff0c;为后期学习MVC架构打好基础&#xff1b;2&#xff0c;了解监听&#xff1b;3&…

[java/初学者/GUI编程]GUI界面设计——界面组件类

前言 GUI&#xff0c;即图形用户界面&#xff0c;其英文全称是Graphics User Interface。 它是基于图形的界面,windows就是一个图形用户界面的操作系统,而DOS是基于命令提示符的操作系统,GUI编程就是编出一个图形用户界面的软件&#xff0c;它使用图形的方式&#xff0c;以菜…

QT GUI编程

QT GUI编程 一、QT基础1.1、QT简介1.2、QT应用范围1.3、开发环境1.4、QT软件下载安装教程1.5、QT内存管理1.6、第一个QT程序1.7、打印跟踪1.8、QT工程示例1.9、QT 图形编程1.10、信号与槽1.11、QT实现心仪的计算器1.12、将QT文件单独提取出来自由使用 二、窗口部件2.1、常用类介…

GUI(图形界面编程)

&#xff08;1&#xff09;GUI 与CLI GUI •Graphical User Interface(图形用户接口)。 •用图形的方式&#xff0c;来显示计算机操作的界面&#xff0c;这样更方便更直观。 CLI •Command line User Interface (命令行用户接口&#xff09; •就是常见的Dos命令行操作。 •需要…

GUI概述

GUI简介 GUI&#xff08;Graphics User Interface&#xff09;&#xff0c;中文名称为图形用户界面&#xff0c;是指采用图形方式显示的计算机操作用户界面&#xff0c;是计算机与其使用者之间的对话接口&#xff0c;是计算机系统的重要组成部分。 早期&#xff0c;电脑向用户提…

GUI(图形用户界面)

GUI全称是Graphical User Interface &#xff0c;即图形用户界面。GUI就是可以让用户直接操作的图形界面&#xff0c;包括窗口、菜单、按钮、工具栏和其他各种图形界面元素。 1.Swing概述 Swing是Java语言开发图形化界面的一个工具包。它以抽象窗口工具包&#xff08;AWT&…

虚拟存储技术

一.实现内存扩充的技术&#xff1a; &#xff08;1&#xff09;覆盖技术&#xff1a; 在程序运行中&#xff0c;在不同时刻把同一个存储区分配给不同程序段和数据段&#xff0c;实现存储区共享。适用于连续存储&#xff08;单一连续区分配&#xff0c;分区&#xff09; 如图B…

浅谈进程地址空间与虚拟存储空间

早期的内存分配机制 在早期的计算机中&#xff0c;要运行一个程序&#xff0c;会把这些程序全都装入内存&#xff0c;程序都是直接运行在内存上的&#xff0c;也就是说程序中访问的内存地址都是实际的物理内存地址。当计算机同时运行多个程序时&#xff0c;必须保证这些程序用…

虚拟存储器系统

技术来源 来源1&#xff1a;来源于服务器中虚拟化feature的实现&#xff0c;不同的程序需要共享一片硬件资源&#xff0c;包括计算资源与存储资源&#xff1b;如何有效且安全的共享存储器就是关键。来源2&#xff1a;消除有限的主存容量对大的程序的限制。远古时代&#xff0c…

虚拟存储器/虚拟内存

器为每个程序提供了一个大的、一致的、私有地址空间。 三个重要功能&#xff1a; 将主存看成是磁盘的高速缓存&#xff0c;在主存中只保存活动区域&#xff0c;并根据需要在磁盘和主存之间来回传送数据。为每个进程提供了一致的私有空间。保护每个进程的地址空间不被其他进程破…

5.虚拟存储管理

虚拟存储管理 文章目录 虚拟存储管理1.虚拟存储器概述1.1常规存储管理方式的特征和局部性原理1.2虚拟存储器的定义与特征1.3虚拟存储器的实现方法 2.请求分页存储管理方式2.1请求分页存储管理方式基本思想2.2请求分页中的硬件支持2.3内存分配策略和分配算法2.4调页策略 3.页面置…

(五)虚拟存储概念

1.需求背景 计算机系统内存空间不够用。 2.覆盖和交换 覆盖技术&#xff1a;把程序划分成功能独立的模块&#xff0c;将不会同时执行的模块共享同一块内存区域。 缺点&#xff1a;编程困难&#xff0c;增加了执行时间 交换技术&#xff1a;增加正在运行或需要运行的程序的内…

存储虚拟化技术的介绍

导读Java虚拟机内存的各个区域&#xff0c;以及这些区域的作用、服务对象以及其中可能产生的问题&#xff0c;作为大家的面试宝典。那一起来学习—存储虚拟化技术。 数据在整个计算机系统是最重要的一部分&#xff0c;也是最珍贵的。数据的存储一直是一个热议的话题&#xff0c…

进程地址空间与虚拟存储空间的理解

在进入正题前先来谈谈操作系统内存管理机制的发展历程&#xff0c;了解这些有利于我们更好的理解目前操作系统的内存管理机制。 一 早期的内存分配机制 在 早期的计算机中&#xff0c;要运行一个程序&#xff0c;会把这些程序全都装入内存&#xff0c;程序都是直接运行…

虚拟存储管理仿真

实验内容 模拟请求分页虚拟存储管理技术中的硬件地址变换、缺页中断及页式淘汰算法处理缺页中断 实验目的 为了使大的作业(其地址空间超过内存可用空间)或多个作业的地址空间之和超过实际主存空间时,仍能运行,引入了”虚拟存储器”的概念.使作业的一部分地址空间在主存,另一…

虚拟内存空间

每一个进程都会对应一个虚拟地址空间&#xff0c;32位操作系统会为每个进程分配4G&#xff08;2的32次方&#xff09;的虚拟地址空间&#xff0c;而MMU&#xff08;Memory Management Unit&#xff0c;内存管理单元&#xff09;负责把这4G虚拟内存映射到实际的物理内存中。这4G…

虚拟化存储和非虚拟化存储

有文件系统的叫虚拟化存储,没有文件系统的叫非虚拟化存储。. 虚拟化存储:由SAN 或 NAS 提供的存储空间,需要添加一层文件系统来屏蔽底层的差异性,性能较差。支持更多的虚拟化特性。 非虚拟化存储:由分布式存储提供的存储空间,没有添加文件系统,性能好,但无法支持高级特…

内存管理:虚拟存储

内存管理——虚拟存储器 目录 内存管理——虚拟存储器虚拟存储器概述常规存储管理方式的特征和局部性原理虚拟存储的定义和特征虚拟存储器的实现方法1.分页请求系统2.请求分段系统 请求分页存储管理方式请求分页中的硬件支持1.请求页表机制2.缺页中断机构3.地址变换机构 请求分…