python笔记-界面开发
1、界面开发:wxPython
- 一个开源的Python GUI开发工具包
- 提供了一个跨平台的GUI编程接口,支持Windows、macOS、Linux等多个操作系统
- 可以创建多种GUI应用程序,包括桌面应用程序、游戏、数据分析和可视化工具、web应用程序等
- 基于C++编写的WxWidgets库的Python封装,它提供了许多GUI部件,如按钮、文本框、标签、复选框、单选按钮、列表框、菜单和滚动条等
- 支持用户自定义部件,WxPython还提供了可扩展的事件处理机制和数据绑定功能,方便开发者管理和处理用户操作和数据
- 是一个功能强大的GUI开发工具包,可以满足各种GUI应用程序的需求,同时也易于学习和使用;
2、常用组件速查 - 组件:窗口 类名:wx.Frame 主要用途:主应用程序窗口
- 组件:面板 类名:wx.Panel 主要用途:容器,用于分组控件
- 组件:按钮 类名:wx.Button 主要用途:触发操作
- 组件:文本框 类名:wx.TextCtrl 主要用途:单行或多行文本输入
- 组件:标签 类名:wx.StaticText 主要用途:显示静态文本
- 组件:复选框 类名:wx.CheckBox 主要用途:多项选择
- 组件:单选按钮 类名:wx.RadioButton 主要用途:单项选择
- 组件:列表框 类名:wx.ListBox 主要用途:显示可选列表
- 组件:组合框 类名:wx.ComboBox 主要用途:下拉选择列表
- 组件:滑块 类名:wx.Slider 主要用途:数值范围选择
- 组件:菜单 类名:wx.Menu 主要用途:应用程序菜单
- 组件:工具栏 类名:wx.ToolBar 主要用途:工具按钮集合
- 组件:状态栏 类名:wx.StatusBar 主要用途:状态信息显示
3、常用操作 - 创建应用程序对象
app = wx.App() - 创建窗口,并居中显示
'''size:宽,高 pos:左上角的x坐标、y坐标(左上角是x=0,y=0的原点)'''
frm = wx.Frame(None,title='python学习',
size=(400,400),
pos=(100,100),
style=wx.DEFAULT_FRAME_STYLE)
'''居中显示窗口'''
frm.Centre()
'''None - 父窗口(None 表示没有父窗口,是顶级窗口)'''
'''title="我的第一个窗口" - 窗口标题'''
'''size=(400, 300) - 窗口大小:宽400像素,高300像素''' - 创建面板
pl = wx.Panel(frm,size=(400,400),pos=(100,100)) - 创建静态文本
staticText = wx.StaticText(pl,label='欢迎学习python',pos=(100,100)) - 创建按钮
btn = wx.Button(pl,label='测试',pos=(10,10)) - 给按钮绑定事件,按下btn按钮后执行onClick函数
frm.Bind(wx.EVT_BUTTON,onClick,btn) - 显示窗口
frame.Show() - 一个完整的窗口程序
点击查看代码
import wx
#1.创建一个自己的窗口类
class MyWindow(wx.Frame):
def __init__(self):
#2.调用父类的初始化方法
wx.Frame.__init__(self,None,title='我的小程序',size=(400,400))
self.Centre()
#3.创建面板(panel),所有控件都放在面板上
self.pl = wx.Panel(self)
#4.设置面板背景颜色
self.pl.SetBackgroundColour(wx.Colour(240,240,240)) #浅灰色
#5.创建字体对象
self.font = wx.Font(16,wx.FONTFAMILY_DEFAULT,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_BOLD)
#6.创建标签(显示文字)
self.label = wx.StaticText(self.pl,label='欢迎使用我的程序',pos=(50,30),style=wx.TE_CENTER)
self.label.SetFont(self.font) #给标签设置字体
#7.创建文本框
self.text_input = wx.TextCtrl(self.pl,pos=(50,80),size=(200,30))
#8.创建按钮
self.btn = wx.Button(self.pl,label='点击我',pos=(50,130),size=(100,40))
self.btn.SetFont(self.font)
#9.给按钮绑定事件(当按钮被点击时做什么)
self.Bind(wx.EVT_BUTTON,self.on_button_click,self.btn)
#10.创建 状态栏(显示在窗口底部)
self.CreateStatusBar()
self.SetStatusText('就绪')
#11.按钮点击事件的处理函数
def on_button_click(self,event):
#获取文本框的内容
text = self.text_input.GetValue()
#弹出消息框
wx.MessageBox(f"你输入了:{text}","提示",wx.OK|wx.ICON_INFORMATION)
#在状态栏显示信息
self.SetStatusText(f"刚才输入了:{text}")
if __name__ == '__main__':
app = wx.App()
window = MyWindow()
window.Show()
app.MainLoop() #进入主循环
- 简单抽奖器完整代码
点击查看代码
import random
import wx
class MyFrame(wx.Frame):
Namelist = ['张三','李四','王五','tom','jake','miya','jack','Coco','王麻子']
#构造方法
def __init__(self):
wx.Frame.__init__(self,None,title='抽奖器',pos=(100,100),size=(400,300))
#super().__init__(None,title='抽奖器',pos=(100,100),size=(400,300)) #super().__init__() 在调用父类构造函数时,不需要显式传递 self 参数:
'''创建面板'''
self.pl = wx.Panel(self,pos=(100,100),size=(400,400))
'''设置背景颜色'''
self.pl.SetBackgroundColour((50,150,0))
'''创建字体:字体大小,字体包,字体风格,是否加粗'''
self.font = wx.Font(20,wx.FONTFAMILY_SWISS,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_BOLD)
'''创建静态文本'''
#self.staticText = wx.StaticText(self.pl,label='欢迎使用抽奖器',pos=(100,10))
#创建显示名字的静态文本
self.staticText = wx.StaticText(self.pl, label=random.choice(self.Namelist), pos=(0, 50),size=(400,60),style=wx.ALIGN_CENTER)
'''为静态文本设置字体'''
self.staticText.SetFont(self.font)
'''为静态文本设置背景颜色'''
#self.staticText.SetBackgroundColour((255,255,180))
'''创建按钮'''
self.btn1 = wx.Button(self.pl,label='开始抽奖',pos=(100,120),size=(80,40))
self.btn2 = wx.Button(self.pl, label='结束抽奖', pos=(200, 120),size=(80,40))
'''为按钮绑定事件(按下按钮后执行的操作)'''
self.Bind(wx.EVT_BUTTON,self.onClick,self.btn1)
self.Bind(wx.EVT_BUTTON,self.stop_name,self.btn2)
'''初始化计时器变量'''
self.timer = None
'''居中显示'''
self.Center()
def onClick(self,event):
self.timter = wx.Timer(self) #创建一个定时器
self.Bind(wx.EVT_TIMER,self.update_name,self.timter) #绑定定时器
self.timter.Start(100) #每个500毫秒启动一次定时器
def update_name(self,event):
self.staticText.SetLabel(random.choice(self.Namelist))
self.staticText.Refresh()
def stop_name(self,event):
self.timter.Stop() #停止计时器
if __name__ == '__main__': #python程序的主入口
app = wx.App() #创建一个应用对象
frm = MyFrame() #创建窗口
frm.Show() #显示窗口
app.MainLoop() #让窗口一直显示
- 文本输入框设置
self.entry = wx.TextCtrl(self.pl,pos=(20,10),size=(190,30),style=wx.TE_RIGHT | wx.TE_READONLY)- wx.TE_RIGHT:文本右对齐
- wx.TE_READONLY:只读(用户不能直接输入)

浙公网安备 33010602011771号