-
2020-10-29 22:26:29
本文实例讲述了Python GUI编程。分享给大家供大家参考,具体如下:
import os
from time import sleep
from tkinter import *
from tkinter.messagebox import showinfo
class DirList(object):
def __init__(self, initdir=None):
self.top = Tk()
self.label = Label(master=self.top, text='Directory Lister V1.0')
self.label.pack()
self.cwd = StringVar(master=self.top)
self.dirl = Label(self.top, fg='blue', font=('Helvetica', 14, 'bold'))
self.dirl.pack()
self.dirfm = Frame(master=self.top)
self.dirsb = Scrollbar(master=self.dirfm)
self.dirsb.pack(side=RIGHT,fill=Y) # fill=Y,垂直填充空间排列
self.dirs = Listbox(master=self.dirfm, height=15, width=50, yscrollcommand=self.dirsb.set)
self.dirs.bind('', func=self.setDirAndGo) # ,双击显示路径列表
self.dirsb.config(command=self.dirs.yview)
self.dirs.pack(side=LEFT, fill=BOTH)
self.dirfm.pack()
self.dirn = Entry(master=self.top, width=50, textvariable=self.cwd)
self.dirn.bind('', func=self.doLS)
self.dirn.pack()
self.bfm = Frame(master=self.top)
self.cleer = Button(master=self.bfm, text='清除', command=self.clrDir, activeforeground='white',
activebackground='blue')
self.ls = Button(master=self.bfm, text='显示列表', command=self.doLS, activeforeground='white',
activebackground='green')
self.quit = Button(master=self.bfm, text='退出', command=self.top.quit, activeforeground='white',
activebackground='red')
self.cleer.pack(side=LEFT)
self.ls.pack(side=LEFT)
self.quit.pack(side=LEFT)
self.bfm.pack()
if initdir:
self.cwd.set(os.curdir)
self.doLS()
def setDirAndGo(self, ev=None):
self.last = self.cwd.get()
self.dirs.config(selectbackground='red')
chek = self.dirs.get(self.dirs.curselection())
if not chek:
chek = os.curdir
self.cwd.set(chek)
self.doLS()
def doLS(self, ev=None):
error = ''
tdir = self.cwd.get()
if not tdir:
tdir = os.curdir
if not os.path.exists(tdir):
error = tdir + ':未找到文件,请检查路径!'
elif not os.path.isdir(tdir):
error = tdir + ':不是一个路径!'
if error:
# self.cwd.set(error)
showinfo(title='提示',message=error)
self.top.update()
# sleep(2)
if not (hasattr(self, 'last') and self.last):
self.last = os.curdir
self.cwd.set(self.last)
self.dirs.config(selectbackground='LightSkyBlue')
self.top.update()
return
if not os.path.isdir(tdir):
self.cwd.set('')
else:
self.cwd.set('获取目录内容中...')
self.top.update()
dirlist = os.listdir(tdir)
dirlist.sort()
os.chdir(tdir)
self.dirl.config(text=os.getcwd())
self.dirs.delete(0, END)
self.dirs.insert(END, os.curdir)
self.dirs.insert(END, os.pardir)
for eachfile in dirlist:
self.dirs.insert(END, eachfile)
self.cwd.set(os.curdir)
self.dirs.config(selectbackground='LightSkyBlue')
def clrDir(self, ev=None):
self.cwd.set('')
if __name__ == '__main__':
dir = DirList(os.curdir)
mainloop()
效果如下:
希望本文所述对大家Python程序设计有所帮助。
更多相关内容 -
Python GUI界面编程
2018-10-04 18:52:13常用GUI框架 wxPython 安装wxPython pip install -U wxPython C:\Users> pip install -U wxPython Collecting wxPython Downloading ...wxPython
安装wxPython
pip install -U wxPython
C:\Users> pip install -U wxPython Collecting wxPython Downloading https://files.pythonhosted.org/packages/34/41/e0e109a72966f596a5b93123d94eaabd53509ef6766fa3321b4bfadbbb14/wxPython-4.0.3-cp37-cp37m-win_amd64.whl (22.7MB) 100% |████████████████████████████████| 22.7MB 819kB/s Collecting PyPubSub (from wxPython) Downloading https://files.pythonhosted.org/packages/ab/9e/3b50915d3346971aaa49074425788598ee4907e67c097e013f1a862bd45c/Pypubsub-4.0.0-py3-none-any.whl (63kB) 100% |████████████████████████████████| 71kB 1.5MB/s Requirement already satisfied, skipping upgrade: six in d:\python\lib\site-packages (from wxPython) (1.11.0) Installing collected packages: PyPubSub, wxPython Successfully installed PyPubSub-4.0.0 wxPython-4.0.3
wxPython的两个基础对象,应用程序对象和顶级窗口:
- 应用程序对象管理主事件循环,主事件循环是wxPython程序的动力。如果没有应用程序对象,wxPython应用程序将不能运行。
- 顶级窗口通常用于管理最重要的数据,控制并呈现给用户。
创建一个wx.App的子类
- 定义子类wx.App
- 在定义子类中写一个OnInit()初始化方法
- 在程序的主要部分创建这个类的一个实例
- 调用应用程序实例的MainLoop方法。这个方法将程序的控制权转交给wxPython
import wx # 导入wxPython class App(wx.App): def OnInit(self): # 初始化方法 frame = wx.Frame(parent=None, title='第一个窗口程序') # 创建顶级窗口 frame.Show() # 显示窗口 return True # 返回值(返回窗口,在屏幕展示) if __name__ == '__main__': app = App() # 实例化App类 app.MainLoop() # 调用App类的MainLoop()主循环方法
执行结果:
直接使用wx.App
通常,如果在系统中只有一个窗口的话,可以不创建wx.App子类,直接使用wx.App。这个类提供了一个最基本的OnInit()初始化方法。
import wx # 导入wxPython app = wx.App() # 初始化wx.App类 frame = wx.Frame(None, title='第一个窗口程序') # 定义一个顶级窗口 frame.Show() # 显示窗口 app.MainLoop() # 调用wx.App类的MainLoop()主循环方法
执行结果:
使用wx.Frame框架
wx.Frame(parent=None, id=-1, title="", pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_DIALOG_STYLE, name="frame")
- parent:框架的父窗口。如果是顶级窗口,这个值是None
- id:关于新窗口的wxPython ID号。通常设为-1,让wxPython自动生成一个新的ID
- title:窗口标题
- pos:一个wx.Point对象,它指定这个新窗口的左上角在屏幕中的位置。在图形用户界面程序中,通常是(0,0)是显示器的左上角。这个默认值(-1,-1)将让系统决定窗口的位置
- size:一个wx.Python对象,他指定这个窗口的初始尺寸,这个默认值(-1,-1)将让系统决定窗口的初始尺寸
- style:指定窗口的类型的常量。可以使用或运算来组合他们。
- name:框架内在的名字。可以使用它来寻找这个窗口
示例代码:
import wx # 导入wxPython class MyFrame(wx.Frame): def __init__(self, parent, id): wx.Frame.__init__(self, parent, id, title="创建Frame", pos=(100, 100), size=(300, 300)) if __name__ == '__main__': app = wx.App() # 初始化应用 frame = MyFrame(parent=None, id=1) # 实例MyFrame类,并传递参数 frame.Show() # 显示窗口 app.MainLoop() # 调用MainLoop()主循环方法
执行结果:
常用控件
StaticText文本类
创建完窗口以后,我们可以在窗口内添加一些控件,所谓的控件,就是经常使用的按钮、文本、输入框、单选框等。
wx.StaticText(parent, id, lable, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, name="staticText")
- parent:父窗口部件
- id:标识符。使用-1可以自动创建一个唯一的标识
- lable:显示在静态控件中的文本内容
- pos:一个wx.Point或者一个Python元组,它是窗口部件的位置
- size:一个wx.Size或一个Python元组,它是窗口部件的尺寸
- style:样式标记
- name:对象名字
实例代码:
使用wx.StaticText输出Python之禅# -*- coding:utf-8 -*- import wx class MyFrame(wx.Frame): def __init__(self, parent, id): wx.Frame.__init__(self, parent, id, title="创建StaticText类", pos=(100, 100), size=(600, 400)) panel = wx.Panel(self) # 创建画板 # 创建标题,并设置字体 title = wx.StaticText(panel, label='Python之禅——Tim Peters', pos=(100, 20)) font = wx.Font(16, wx.DEFAULT, wx.FONTSTYLE_NORMAL, wx.NORMAL) title.SetFont(font) # 创建文本 wx.StaticText(panel, label='优美胜于丑陋',pos=(50, 50)) wx.StaticText(panel, label='明了胜于晦涩',pos=(50, 70)) wx.StaticText(panel, label='简洁胜于复杂',pos=(50, 90)) wx.StaticText(panel, label='复杂胜于凌乱',pos=(50, 110)) wx.StaticText(panel, label='扁平胜于嵌套',pos=(50, 130)) wx.StaticText(panel, label='间隔胜于紧凑',pos=(50, 150)) wx.StaticText(panel, label='可读性很重要',pos=(50, 170)) wx.StaticText(panel, label='即便假借特例的实用性之名,也不可违背这些规则', pos=(50,190)) wx.StaticText(panel, label='不要包容所有错误,除非你确定需要这样做', pos=(50, 210)) wx.StaticText(panel, label='当存在多种可能,不要尝试去猜测', pos=(50, 230)) wx.StaticText(panel, label='而是尽量找一种,最好是唯一一种明显的解决方案', pos=(50, 250)) wx.StaticText(panel, label='虽然这并不容易,因为你不是 Python 之父', pos=(50, 270)) wx.StaticText(panel, label='做也许好过不做,但不假思索就动手还不如不做', pos=(50, 290)) wx.StaticText(panel, label='如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然', pos=(50, 310)) wx.StaticText(panel, label='命名空间是一种绝妙的理念,我们应当多加利用', pos=(50, 330)) if __name__ == '__main__': app = wx.App() # 初始化应用 frame = MyFrame(parent=None, id=-1) # 实例MyFrame类,并传递参数 frame.Show() # 显示窗口 app.MainLoop() # 调用主循环方法
上述代码中,使用panel = wx.Panel(self)来创建画板,并将panel 作为父类,然后将组件放入窗体中,此外,使用wx.Font类来设置字体。创建一个字体实例,需要使用如下构造函数:
wx.Font(pointSize, family, style, weight, underline=False, faceName="", encoding=wx.FONTENCODING_DEFAULT)
- pointSize:字体的整数尺寸,单位为磅
- family:用于快速的指定一个字体而不需要知道该字体实际的名字
- style:用于指定字体是否倾斜
- weight:指明字体醒目程度
- underline:仅在Windows系统下有效,如果取值为True,则加下划线,如果为False则无下划线
- faceName:指定字体名
- encoding:运行在几个编码中选择一个,大多数情况可以使用默认编码
执行结果:
TextCtrl输入文本
wx.TextCtrl(parent, id, value="", pos=wx.DefaultPosition, size=wx.DefaultSize,style=0,validator=wx.DefaultValidator name=wx.TextCtrlNameStr)
- style:单行wx.TextCtrl的样式,取值如下:
- wx.TE_CENTER:控件中的文本居中
- wx.TE_LEFT:控件中的文本左对齐
- wx.TE_NOHIDESEL:文本始终高亮显示,仅适用于Windows
- wx.TE_PASSWORD:不显示所键入的文本,以(*)代替显示
- wx.TE_PROCESS_ENTER:如果使用改参数,那么当用户在控件内按下
Enter
键时,一个文本输入事件将被触发。否则,按键事件由该文本控件或该对话框管理 - wx.TE_PROCESS_TAB:如果指定了这个样式,那么通常的字符事件在按下
Tab
键时创建(一般意味着一个制表符将被插入文本)。否则,tab由对话框来管理,通常是控件间切换 - wx.TE_READONLY:文本控件为只读,用户不能修改其中文本
- wx.TE_RIGHT:控件中的文本右对齐
- value:显示在该控件中的初始文本
- validator:常用于过滤数据以确保只能键入要接受的数据
示例代码:
# -*- coding:utf-8 -*- import wx class MyFrame(wx.Frame): def __init__(self, parent, id): wx.Frame.__init__(self, parent, id, title="创建TextCtrl类", size=(400, 300)) #创建面板 panel = wx.Panel(self) # 创建文本和输入框 self.title = wx.StaticText(panel, label="请输入用户名和密码", pos=(140, 20)) self.label_user = wx.StaticText(panel, label="用户名:", pos=(50, 50)) self.text_user = wx.TextCtrl(panel, pos=(100, 50), size=(235, 25), style=wx.TE_LEFT) self.label_pwd = wx.StaticText(panel, pos=(50, 90), label="密 码:") self.text_password = wx.TextCtrl(panel, pos=(100, 90), size=(235, 25), style=wx.TE_PASSWORD) if __name__ == '__main__': app = wx.App() # 初始化应用 frame = MyFrame(parent=None, id=-1) # 实例MyFrame类,并传递参数 frame.Show() # 显示窗口 app.MainLoop() # 调用主循环方法
执行结果:
Button按钮类
wx.Button(parent, id, lable, pos, size=wx.DefaultSize, style=0, validator, name="button")
wx.Button和wx.TextCtrl的参数基本相同,其中参数lable是显示在按钮上的文本
示例代码:
# -*- coding:utf-8 -*- import wx class MyFrame(wx.Frame): def __init__(self, parent, id): wx.Frame.__init__(self, parent, id, title="创建TextCtrl类", size=(400, 300)) panel = wx.Panel(self) # 创建面板 # 创建文本和输入框 self.title = wx.StaticText(panel, label="请输入用户名和密码", pos=(140, 20)) self.label_user = wx.StaticText(panel, label="用户名:", pos=(50, 50)) self.text_user = wx.TextCtrl(panel, pos=(100, 50), size=(235, 25), style=wx.TE_LEFT) self.label_pwd = wx.StaticText(panel, pos=(50, 90), label="密 码:") self.text_password = wx.TextCtrl(panel, pos=(100, 90), size=(235, 25), style=wx.TE_PASSWORD) self.bt_confirm = wx.Button(panel, label='确定', pos=(105, 130)) # 创建“确定”按钮 self.bt_cancel = wx.Button(panel, label='取消', pos=(195, 130)) # 创建“取消”按钮 if __name__ == '__main__': app = wx.App() # 初始化 frame = MyFrame(parent=None, id=-1) # 实例MyFrame类,并传递参数 frame.Show() # 显示窗口 app.MainLoop() # 调用主循环方法
执行结果:
绑定事件
当我们点击按钮后需要让系统做出相应的响应,如执行某个判断并给出提示,使用Bind()方法可以将事件处理函数绑定到给定的事件上:
bt_confirm.Bind(wx.EVT_BUTTON, OnclickSubmit)
示例代码:
点击确定,判断密码是否正确等
# -*- coding:utf-8 -*- import wx class MyFrame(wx.Frame): def __init__(self, parent, id): wx.Frame.__init__(self, parent, id, '用户登录', size=(400, 300)) # 创建面板 panel = wx.Panel(self) # 创建“确定”和“取消”按钮, 并绑定事件 self.bt_confirm = wx.Button(panel, label='确定') self.bt_confirm.Bind(wx.EVT_BUTTON, self.OnclickSubmit) self.bt_cancel = wx.Button(panel, label='取消') self.bt_cancel.Bind(wx.EVT_BUTTON, self.OnclickCancel) # 创建文本,左对齐 self.title = wx.StaticText(panel, label="请输入用户名和密码") self.label_user = wx.StaticText(panel, label="用户名:") self.text_user = wx.TextCtrl(panel, style=wx.TE_LEFT) self.label_pwd = wx.StaticText(panel, label="密 码:") self.text_password = wx.TextCtrl(panel, style=wx.TE_PASSWORD) # 添加容器,容器中控件按横向并排排列 hsizer_user = wx.BoxSizer(wx.HORIZONTAL) hsizer_user.Add(self.label_user, proportion=0, flag=wx.ALL, border=5) hsizer_user.Add(self.text_user, proportion=1, flag=wx.ALL, border=5) hsizer_pwd = wx.BoxSizer(wx.HORIZONTAL) hsizer_pwd.Add(self.label_pwd, proportion=0, flag=wx.ALL, border=5) hsizer_pwd.Add(self.text_password, proportion=1, flag=wx.ALL, border=5) hsizer_button = wx.BoxSizer(wx.HORIZONTAL) hsizer_button.Add(self.bt_confirm, proportion=0, flag=wx.ALIGN_CENTER, border=5) hsizer_button.Add(self.bt_cancel, proportion=0, flag=wx.ALIGN_CENTER, border=5) # 添加容器,容器中控件按纵向并排排列 vsizer_all = wx.BoxSizer(wx.VERTICAL) vsizer_all.Add(self.title, proportion=0, flag=wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER, border=15) vsizer_all.Add(hsizer_user, proportion=0, flag=wx.EXPAND | wx.LEFT | wx.RIGHT, border=45) vsizer_all.Add(hsizer_pwd, proportion=0, flag=wx.EXPAND | wx.LEFT | wx.RIGHT, border=45) vsizer_all.Add(hsizer_button, proportion=0, flag=wx.ALIGN_CENTER | wx.TOP, border=15) panel.SetSizer(vsizer_all) def OnclickSubmit(self, event): """ 点击确定按钮,执行方法 """ message = "" username = self.text_user.GetValue() # 获取输入的用户名 password = self.text_password.GetValue() # 获取输入的密码 if username == "" or password == "": # 判断用户名或密码是否为空 message = '用户名或密码不能为空' elif username == 'admin' and password == '123456': # 用户名和密码正确 message = '登录成功' else: message = '用户名和密码不匹配' # 用户名或密码错误 wx.MessageBox(message) # 弹出提示框 def OnclickCancel(self, event): # 没有event点击取消会报错 """ 点击取消按钮,执行方法 """ self.text_user.SetValue("") # 清空输入的用户名 self.text_password.SetValue("") # 清空输入的密码 if __name__ == '__main__': app = wx.App() # 初始化 frame = MyFrame(parent=None, id=-1) # 实例MyFrame类,并传递参数 frame.Show() # 显示窗口 app.MainLoop() # 调用主循环方法
执行结果:
-
python gui界面
2017-03-29 13:52:41python gui界面之校园学习社区管理系统 -
Python GUI界面编程-初识
2020-05-02 16:46:54图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。然而这界面若要通过...图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。然而这界面若要通过在显示屏的特定位置,以"各种美观而不单调的视觉消息"提示用户"状态的改变",势必得比简单的消息呈现花上更多的计算能力。 GUI概述
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。然而这界面若要通过在显示屏的特定位置,以"各种美观而不单调的视觉消息"提示用户"状态的改变",势必得比简单的消息呈现花上更多的计算能力。在 GUI 中,并不只是键入文本和返回文本,用户可以看到窗口、按钮、文本框等图形,而且可以用鼠标单击,还可以通过键盘键入,GUI 是与程序交互的一种不同的方式。
Python GUI常用框架
Flexx
Flexx是一个纯Python工具包,用于创建图形用户界面(GUI),它使用Web技术进行渲染。 应用程序完全用Python编写;PScript转换器动态生成必要的JavaScript。
项目地址:https://github.com/flexxui/flexx
入门指南:https://flexx.readthedocs.io/en/stable/guide/index.html
安装
Flexx需要Python 3.5+,也适用于pypy。 此外,它还依赖以下的库:- Tornado库(纯Python)。
- PScript库(纯Python flexxui项目)
- Webruntime库(纯Python flexxui项目)
- Dialite库(纯Python flexxui项目)
要安装最新版本(和依赖项),请使用以下任一命令:
pip install flexx
conda install flexx -c conda-forge
或者用以下方法来获得更新:pip install https://github.com/flexxui/flexx/archive/master.zip
wxPython
wxPython是用于Python编程语言的跨平台GUI工具箱。它允许Python程序员轻松,轻松地创建具有健壮,功能强大的图形用户界面的程序。它是作为一组Python扩展模块实现的,这些模块包装了用C ++编写的流行wxWidgets跨平台库的GUI组件 。
官网:https://www.wxpython.org/Kivy
Kivy是开源Python函式库,用于开发行动应用程序和其它采用自然用户界面的多点触控应用软件。它可以在Android,iOS,Linux,OS X和Windows执行。采用MIT授权条款,Kivy是自由并且开源的软件。
官网:https://kivy.org/PyQt
PyQt是Qt公司 Qt应用程序框架的一组Python v2和v3绑定,可在Qt支持的所有平台上运行,包括Windows,OS X,Linux,iOS和Android。PyQt5支持Qt v5。PyQt4支持Qt v4,并将针对Qt v5进行构建。绑定是作为一组Python模块实现的,包含1000多个类。
官网:https://www.riverbankcomputing.com/software/pyqt/introTkinter
Tkinter 是使用 python 进行窗口视窗设计的模块。Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口。作为 python 特定的GUI界面,是一个图像的窗口,tkinter是python 自带的,可以编辑的GUI界面,我们可以用GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个程序输入,输出窗口的话,是没用用户体验的。所有开发一个图像化的小窗口,就是必要的。
索引:https://wiki.python.org/moin/TkInterPywin32
Windows Pywin32允许你像VC一样的形式来使用PYTHON开发win32应用。代码风格可以类似win32 sdk,也可以类似MFC,由你选择。如果你仍不放弃vc一样的代码过程在python下,那么这就是一个不错的选择。
项目地址:https://github.com/mhammond/pywin32PyGTK
PyGTK让你用Python轻松创建具有图形用户界面的程序
官网:https://pygobject.readthedocs.io/en/latest/创建应用程序
使用wxPython框架
安装
Windwos与MAC平台使用pip工具安装wxPython只需要一行命令:
pip install -U wxPython
Linux平台:由于发行版和wx端口(GTK2或GTK3)有多种选项,因此文件不能全部位于同一文件夹中,以便通过pip轻松访问。这只是意味着您需要进一步细化以找到要提供给pip的URL。例如,要获取适用于Ubuntu 16.04(和16.10,LinuxMint 18以及其他版本)的GTK3 wxPython构建,可以使用如下pip命令: pip install -U \ -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04 \ wxPython
准备
注意:本部分知识来源与网络
使用wxPython之前,先了解两个基础对象:应用程序对象和顶级窗口。
应用程序对象管理主事件循环,主事件循环是wxPython程序的动力。如果没有应用程序对象,wxPython应用程序将不能运行。
顶级窗口通常用于管理最重要的数据,控制并呈现给用户。
两个基础对象和应用程序的其他部分之间的关系如下图所示:
这个应用程序对象拥有顶级窗口和主循环事件。顶级窗口管理其窗口中的组件和其他的分配给它的数据对象。窗口和它的组件触发的事件基于用户的动作,并接受事件通知以便改变显示。Hell Word
代码:
import wx
app = wx.App(False)
frame = wx.Frame(None,wx.ID_ANY,"Hello,world!!!_Linux就该这么学")
frame.Show(show=True)
app.MainLoop()解析:
注意:
- 可以用-1来替代wx.ID_ANY,-1 就是默认值的意思。另外wxWidgets还提供了其它的标准 ID(v2.8)。 你也可以自定义一个ID,但Getting Started with wxPython 认为,没有理由那样做,用标准ID更好。
wx.Frame
的完整语法是:wx.Frame(parent, id=-1, title="", pos=wx.DefaultPosition,size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE,name="frame")
parent:框架的父窗口。如果是顶级窗口,这个值是None。
id:关于新窗口的wxPython ID号。通常设为-1,让wxPython自动生成一个新的ID。
title:窗口的标题。
pos:一个wx.Point对象,它指定这个新窗口的左上角在屏幕中的位置。在图形用户界面程序中,通常(0,0)是显示器的左上角。这个默认值(-1,-1)将让系统决定窗口的位置。
size:一个wx.Size对象,它指定这个窗口的初始尺寸。这个默认值(-1,-1)将让系统决定窗口的初始尺寸。
style:指定窗口的类型的常量。可以使用或运算来组合它们。
name:框架内在的名字。可以使用它来寻找这个窗口。
Python GUI界面编程-初识篇到此结束,感谢您的阅读,愿您可从此文获取收获。
-
Python GUI编程完整示例
2020-09-19 11:59:05主要介绍了Python GUI编程,结合完整示例形式分析了Python基于tkinter模块的GUI图形界面编程相关实现技巧,需要的朋友可以参考下 -
推荐8款常用的Python GUI图形界面开发框架
2020-12-20 12:47:11本文将推荐一些 Python GUI 框架,希望对你有所帮助,如果你有其他更好的选择,欢迎在评论区留言。 Python 的 UI 开发工具包 Kivy Kivy是一个开源工具包能够让使用相同源代码创建的程序能跨平台运行。它主要关注创新... -
python应用系列教程——python的GUI界面编程Tkinter全解
2017-10-27 14:50:28python的GUI界面编程,主要由Tkinter、Tix、tkMessageBox 几个库提供,当然有更新的更美观的库大家可以去搜索。在库中定义了一些基础控件对象,和组合控件对象。可以在创建控件时传递控件属性,也可以在创建了控件...全栈工程师开发手册 (作者:栾鹏)
python教程全解python的GUI界面编程,常用的几个python库包含如下:
Tkinter:
Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
wxPython:
wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python程序员很方便的创建完整的、功能键全的 GUI 用户界面。
Jython:
Jython 程序可以和 Java 无缝集成。除了一些标准模块,Jython 使用 Java 的模块。Jython几乎拥有标准的Python 中不依赖于 C 语言的全部模块。比如,Jython 的用户界面将使用 Swing,AWT或者SWT。Jython 可以被动态或静态地编译成 Java 字节码。
Tkinter界面库
今天我们主要介绍一下Tkinter,在库中定义了一些基础控件对象,和组合控件对象。可以在创建控件时传递控件属性,也可以在创建了控件对象以后,再设置属性。
窗口的GUI编程主要包含的知识点为窗口(顶层容器)、容器、组合控件、控件、控件属性、控件函数。本文提供了一个demo,包含了对顶层窗口、基础控件(标签、按钮)、组合控件(比例尺控件、NumericUpDown控件、ComboBox)、控件的属性(文本、位置)、控件函数(按钮点击事件)等内容的编程示例。
主要的控件
Button 按钮控件;在程序中显示按钮。 Canvas 画布控件;显示图形元素如线条或文本 Checkbutton 多选框控件;用于在程序中提供多项选择框 Entry 输入控件;用于显示简单的文本内容 Frame 框架控件;在屏幕上显示一个矩形区域,多用来作为容器 Label 标签控件;可以显示文本和位图 Listbox 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户 Menubutton 菜单按钮控件,由于显示菜单项。 Menu 菜单控件;显示菜单栏,下拉菜单和弹出菜单 Message 消息控件;用来显示多行文本,与label比较类似 Radiobutton 单选按钮控件;显示一个单选的按钮状态 Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间 Scrollbar 滚动条控件,当内容超过可视化区域时使用,如列表框。. Text 文本控件;用于显示多行文本 Toplevel 容器控件;用来提供一个单独的对话框,和Frame比较类似 Spinbox 输入控件;与Entry类似,但是可以指定输入范围值 PanedWindow PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。 LabelFrame labelframe 是一个简单的容器控件。常用与复杂的窗口布局。 tkMessageBox 用于显示你应用程序的消息框。
控件属性
Dimension 控件大小; Color 控件颜色; Font 控件字体; Anchor 锚点; Relief 控件样式; Bitmap 位图; Cursor 光标;
虽然python可以进行界面GUI设计,不过个人觉得界面设计还有net更牛逼一些。
python2.7下的代码
#coding:utf-8 from Tkinter import * #控件基础包,导入这个包后,这个包下的所有函数可以直接调用 import Tkinter from Tkinter import Label, Button, END from Tix import Tk, Control, ComboBox #升级的组合控件包 from tkMessageBox import showinfo, showwarning, showerror #各种类型的提示框 #除此之外还有很多界面编程的包 #顶层窗口 top = Tkinter.Tk() #创建顶层窗口 top.geometry('250x150') #初始化窗口大小 top.title("标题") top.tk.eval('package require Tix') #引入升级包,这样才能使用升级的组合控件 #标签控件 label = Tkinter.Label(top, text='Hello World!',font='Helvetica -12 bold') #创建标签 label.pack(fill=Y, expand=1) #填充到界面 #按钮控件 button = Tkinter.Button(top, text='QUIT',command=top.quit,activeforeground='white',activebackground='red', bg='red', fg='white') #创建按钮,command为回调函数 button.pack(fill=Tkinter.X, expand=1) #fill=tkinter.X表示横向拉伸完全 #自定义函数,控制控件的缩放 def resize(ev=None): label.config(font='Helvetica -%d bold' % scale.get()) #比例尺控件 scale = Scale(top, from_=10, to=40,orient=HORIZONTAL, command=resize) #缩放比例尺 scale.set(12) #初始值 scale.pack(fill=X, expand=1) #填充到界面 #NumericUpDown控件 ct = Control(top, label='Number:',integer=True, max=12, min=2, value=2, step=2) ct.label.config(font='Helvetica -14 bold') ct.pack() #ComboBox控件 cb = ComboBox(top, label='Type:', editable=True) for animal in ('dog', 'cat', 'hamster', 'python'): cb.insert(END, animal) cb.pack() Tkinter.mainloop() #运行这个GUI应用
在python3中,
Tkinter改成了tkinter,
Tix改成了tkinter.tix,
tkMessageBox 改成了tkinter.messageboxpython3.6下代码
#coding:utf-8 #GUI界面编程 from tkinter import * #控件基础包,导入这个包后,这个包下的所有函数可以直接调用 import tkinter from tkinter import Label, Button, END from tkinter.tix import Tk, Control, ComboBox #升级的组合控件包 from tkinter.messagebox import showinfo, showwarning, showerror #各种类型的提示框 #除此之外还有很多界面编程的包 #顶层窗口 top = tkinter.Tk() #创建顶层窗口 top.geometry('250x150') #初始化窗口大小 top.title("标题") top.tk.eval('package require Tix') #引入升级包,这样才能使用升级的组合控件 #标签控件 label = tkinter.Label(top, text='Hello World!',font='Helvetica -12 bold') #创建标签 label.pack(fill=Y, expand=1) #填充到界面 #按钮控件 button = tkinter.Button(top, text='QUIT',command=top.quit,activeforeground='white',activebackground='red', bg='red', fg='white') #创建按钮,command为回调函数 button.pack(fill=tkinter.X, expand=1) #fill=tkinter.X表示横向拉伸完全 #自定义函数,控制控件的缩放 def resize(ev=None): label.config(font='Helvetica -%d bold' % scale.get()) #比例尺控件 scale = Scale(top, from_=10, to=40,orient=HORIZONTAL, command=resize) #缩放比例尺 scale.set(12) #初始值 scale.pack(fill=X, expand=1) #填充到界面 #NumericUpDown控件 ct = Control(top, label='Number:',integer=True, max=12, min=2, value=2, step=2) ct.label.config(font='Helvetica -14 bold') ct.pack() #ComboBox控件 cb = ComboBox(top, label='Type:', editable=True) for animal in ('dog', 'cat', 'hamster', 'python'): cb.insert(END, animal) cb.pack() tkinter.mainloop() #运行这个GUI应用
-
Python GUI界面编程常用模块有哪些?
2020-11-21 03:22:37Python GUI界面编程常用模块有哪些?图形用户界面(Graphical User Interface,GUI)又称图形用户接口,是指采用图形方式显示的计算机操作用户界面。Python 提供了多个图形界面的开发库,几个常用的 Python GUI 库... -
Python学习17(GUI图形用户界面编程)
2022-02-27 10:03:36Python -
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020-12-20 10:08:15本文实例讲述了Python GUI编程学习笔记之tkinter事件绑定操作。分享给大家供大家参考,具体如下: 相关内容: command bind protocol 首发时间:2018-03-04 19:26 command: command是控件中的一个参数,如果... -
Python GUI编程(Tkinter)
2021-11-15 20:04:50Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter:Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 ... -
【python入门级教程】Python GUI界面教学(01)
2020-07-30 16:17:34我们通常使用的软件他们的界面丰富多彩,可以自定义,我们称这样的界面为GUI界面,而在我们之前的学习中,我们用到的都是CUI界面,CUI指控制台,与cmd长得一样,print函数就是用于CUI的,今天我们就要使用tkinter... -
Python之GUI编程
2022-02-09 16:18:42Tkinter:tkinter(Tk interface)是Python的标准GUI库,支持跨平台的GUI程序开发,tkinter适合小型的GUI程序编写,也特别适合初学者学习GUI编程。 wxPython:wxPython是比较流行的GUI库,适合大型应用程序开发,... -
python编程基础:python 实现GUI(图形用户界面)编程详解
2020-03-14 21:59:44今天小编就为大家分享一篇python 实现GUI(图形用户界面)编程详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 Python支持多种图形界面的第三方库,包括: wxWidgets Qt GTK Tkinter: Tkinter... -
python自学 (五)GUI界面编程
2020-07-15 12:09:12GUI界面编程:常用的GUI框架,安装GUI框架wxPython,如何用wxPython创建一个应用程序,掌握wxPython框架中提供的常用控件,掌握BoxSizeer布局的应用,掌握如何进行事件处理 -
Python 中的 GUI 编程
2022-01-13 21:11:12PyQt是跨平台 GUI 工具包 Qt 的 Python 绑定,用 C++ 编写。它是一个用于开发跨平台 GUI 应用程序的库。...在 Python 中使用图形用户界面开发程序需要使用适当的工具包。Python 上最流行和最成熟...