基于Python的GUI图形用户界面编程
创始人
2024-04-28 11:16:44
0
  • 【无限嚣张(菜菜)】:hello您好,我是菜菜,很高兴您能来访我的博客,我是一名爱好编程学习研究的菜菜,每天分享自己的学习,想法,博客来源与自己的学习项目以及编程中遇到问题的总结。
  • 座右铭:尽人事,听天命
  • 个人主页:无限嚣张(菜菜)

目录

 前言    

  • 常用的GUI库
  • 1.Tkinter
  • 2.wxPython
  • 3.PyQT
  • 基于tkinter模块创建GUI程序步骤
  • 主窗口设置
  • 主窗口位置和大小
  • GUI编程整体描述 
  • 常用组件汇总列表
  •  GUI应用程序类的经典写法

 前言    

        在最早程序的设计中,程序和用户的交互都是通过控制台来完成的,而GUI(Graphics User Interface),即图形用户编程,是Python 所提供的一个丰富的组件,可以快速的实现使用图形界面和用户交互。

常用的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 Dseginer 界面设计器快速开发GUI应用程序。

基于tkinter模块创建GUI程序步骤

1.创建应用程序主窗口对象——通过类Tk的无参构造函数

from tkinter import *
from tkinter import messageboxroot = Tk()

2.在主窗口中,添加各种可视化组件,比如:按钮(Button) 文本框(Label)等。

btn01 = Button(root)
btn01["text"] = "创作不易,点个赞再走呗"

3.通过几何布局管理器,管理组件的大小和位置

btn01.pack()

4.事件处理

通过绑定事件处理程序,响应用户操作所触发的事件(比如:单击、双击等)

def dianzai(e):messagebox.showinf("Message","点个赞,让你关注我")print("点一个赞")btn01.bind("

主窗口设置

主窗口位置和大小

        通过geometry(wxh +/- x +/- y)进行设置,w为宽度,h为高度。+x表示距屏幕左边的距离,-x表示距屏幕右边的距离,+y表示屏幕上边的距离,-y表示屏幕下边的距离。表示宽度500,高度300,距左边100个像素,距上边100个像素。

root.title = ("来点赞呀")   # 建立标题
root.geometry("500x300+100+100")

基于上述功能,代码实现如下:

from tkinter import *
from tkinter import messageboxroot = Tk()  # 创建主窗口
root.title = ("来点赞呀")   # 建立标题栏
root.geometry("500x300+100+100")
btn01 = Button(root)  # 建立一个btn01对象设置,将窗口放进去btn01["text"] = "创作不易,点个赞再走呗"
btn01.pack()  # 调用布局管理器,将组件对象合理的放入窗口中def dian_zan(e):  # e 封装的事件对象messagebox.showinfo("Message", "点个赞")print("点个赞")btn01.bind("

显示如下:

GUI编程整体描述 

                图形用户界面是由一个个组件组成的,有的组件还能在组件里边放置其他的组件,我们成为容器,Tkinter GUI组件关系如下:

接下来,我们在代码中查看对象的继承关系图,以button为例:ctrl + 鼠标左键,跳入button中,然后鼠标右键,查看继承结构图如下:

 

常用组件汇总列表

TKinter类名称简介
Toplevel顶层容器类,可用于为其他组件提供单独的容器;Toplevel有点类似于窗口
Button按钮代表按钮组件
Canvas画布提供绘图功能,包括直线、矩形、椭圆、多边形、位图等。
Checkbutton复选框可供用户勾选的复选框
Entry单行输入框用户可输入内容
Frame容器用于加载其它GUI组件
Label标签用于显示不可编辑的文本或图标
LabelFrame容器也是容器组件,类似于Frame,但他支持添加标题
Listbox列表框列出多个选项,供用户选择
Menu菜单菜单组件
Menubutton菜单按钮用来包含菜单的按钮(包括下拉式、层叠式等)
OptionMenu菜单按钮Menubutton的子类,也代表菜单按钮,可通过按钮打开一个菜单
Message菜单按钮类似于标签,但是可以显示多行文本,后来当Label也能显示

 GUI应用程序类的经典写法

        GUI应用程序的主要结构,采用的面向对象的方式,更加合理的组织代码,方便日后的维护。通过类Application组织整个GUI程序,类Application继承了Frame及通过继承拥有了父类的特征,通过构造函数_init_()初始化窗口中的对象,通过createWidgets()方法创建窗口中的对象。Frame框架是一个tkinter组件,表示一个矩形的区域。Frame一般作为容器使用,可以放置其他组件,从而实现复杂的布局。

"""
测试一个经典的GUI程序的写法,使用面向对象的方式
"""
from tkinter import *
from tkinter import messageboxclass Application(Frame):"""面向对象"""def _int_(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.dianzan# 创建一个退出程序self.btnQuit = Button(self,text="退出",command=root.destroy)self.btnQuit.pack()def dianzan(self):messagebox.showinfo("Message", "点个赞")print("点个赞")root = Tk()
root.geometry("400x300+100+200")
root.title("点赞")
app = Application(master=root)root.mainloop()

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...