python笔记06-----(学习自清华大学出版社的python从入门到精通的配套视频)

python笔记----GUI编程:图形用户界面

1.常用的GUI框架
wxPython
Kivy
Flexx
Pyqt
Tkinter
2.安装wxPython
官方网址:https://wxpython.org/
安装:pip install -U wxPython
豆瓣源形式: pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com wxPython
3.创建应用程序
3.1应用程序对象:管理主世界循环
创建:app = wx.App()
3.2顶级窗口:管理最重要的数据,呈现给用户
创建:frame = wx.Frame()
3.3 创建wx.App子类
步骤:1.定义子类 (继承wx.App)
2. 定义Onlnit()初始化方法(创建Frame顶级窗口)
3.创建实例
4. 调用实例的MainLoop()方法
import wx
class App(wx.app):
def OnInit(self):
frame = wx.Frame(parent =None,title="…“)
frame.Show()
return True
if name == ‘main__’:
app = APP()
app.MainLoop()
3.4直接使用wx.App类
import wx
app = wx.APP()
frame = wx.Frame(None,title="…“)
frame.Show()
app.MainLoop()
3.5使用wx.Frame框架
wx.Frame(parent,id = -1,title="…“,pos = wx.DefaultPosition(左上角),size = wx.DefaultSize,style = wx.DEFAULT_FRAME_STYLE,name=“frame”)
创建wx.Frame子类
import wx
class MyFrame(wx.Frame):
def init(self,parent,id):
wx.Frame.init(self,parent,id,title=’…’,pos=(100,100),size=(300,300)
if name == ‘main__’:
app = wx.APP()
frame =MyFrame(parent =None,id=-1)
frame.Show()
app.MainLoop()
4.常用的控件
文本、按钮、输入框、单选框、多选框
4.1 StaticText()文本控件
wx.StaticText(parent,id = -1,label,pos = wx.DefaultPosition(左上角),size = wx.DefaultSize,style = 0,name=“staticText”)
wx.Font(poinSize,family,style(倾斜),weight(加粗),underline=False,faceName-’’’,encoding=wx.FONTENCODING_DEFAULT) #字体设置
例子:使用wx.StaticText()输出Python之禅
import wx
class MyFrame(wx.Frame):
def init(self,parent,id):
wx.Frame.init(self,parent,id,title=’…’,pos=(100,100),size=(600,400))
panel = wx.Panel(self) #创建画板
title=wx.StaticText(parent,id = -1,label=’…’,pos=(100,100))
font=wx.Font(16,wx.DEFAULT,wx.FONTSTYLE_NORMAL,wx.NORMAL)
title.SetFont(font)
wx.StaticText(parent,id = -1,label=’…’,pos=(100,100))
wx.StaticText(parent,id = -1,label=’…’,pos=(100,100))
wx.StaticText(parent,id = -1,label=’…’,pos=(100,100))
if name == ‘main__’:
app = wx.APP()
frame =MyFrame(parent =None,id=-1)
frame.Show()
app.MainLoop()
4.2 TextCtrl输入文本类
wx.TextCtrl(parent,id = -1,value=’’’’,pos = wx.DefaultPosition(左上角),size = wx.DefaultSize,style = 0,validator = wx.DefaultValidator, name=wx.TextCtrlName)
例子:一个标题,两个文本,两个输入框
import wx
class MyFrame(wx.Frame):
def init(self,parent,id):
wx.Frame.init(self,parent,id,title=’…’,pos=(100,100),size=(600,400))
panel = wx.Panel(self) #创建画板
self.tatle=wx.StaticText(panel,id = -1,label=’…’,pos=(100,100))
self.label_user=wx.StaticText(panel,id = -1,label=’…’,pos=(100,100))
self.text_user=wx.TextCtrl(panel,pos=(100,100),size = (100,100),style = wx.TE_LEFT)
self.text_password=wx.TextCtrl(panel,pos=(100,100),size = (100,100),style = wx.TE_PASSWORD)
self.label_password=wx.StaticText(panel,id = -1,label=’…’,pos=(100,100))
if name == ‘main__’:
app = wx.APP()
frame =MyFrame(parent =None,id=-1)
frame.Show()
app.MainLoop()
4.3 Button按钮类
wx.Button(parent,id = -1,label=’’’,pos = wx.DefaultPosition(左上角),size = wx.DefaultSize,style = 0,validator,name=“button”)
例子:添加确认和取消按钮
import wx
class MyFrame(wx.Frame):
def init(self,parent,id):
wx.Frame.init(self,parent,id,title=’…’,pos=(100,100),size=(600,400))
panel = wx.Panel(self) #创建画板
self.title=wx.StaticText(panel,id = -1,label=’…’,pos=(100,100))
self.label_user=wx.StaticText(panel,id = -1,label=’…’,pos=(100,100))
self.text_user=wx.TextCtrl(panel,pos=(100,100),size = (100,100),style = wx.TE_LEFT)
self.text_password=wx.TextCtrl(panel,pos=(100,100),size = (100,100),style = wx.TE_PASSWORD)
self.label_password=wx.StaticText(panel,id = -1,label=’…’,pos=(100,100))
self.bt_confirm=wx.Button(panel,label=’…’,pos=(100,100))
self.bt_cancle=wx.Button(panel,label=’…’,pos=(100,100))
if name == ‘main__’:
app = wx.APP()
frame =MyFrame(parent =None,id=-1)
frame.Show()
app.MainLoop()
4.4 Sizer布局
BoxSizer
GridSizer
FlexGridSizer
GridBagSizer
StaticBoxSizer
1.使用BoxSizer布局:
1.创建BoxSizer :sizer = wx.BoxSizer(wx.VERTICAL)
2.添加控件: sizer.Add()
Box.Add(control(控件),proportion(空间比列),flag,border)
3.设置sizer : panel.SetSizer(sizer)
例子:
import wx
class MyFrame(wx.Frame):
def init(self,parent,id):
wx.Frame.init(self,parent,id,title=’…’,pos=(100,100),size=(300,300)
panel = wx.Panel(self) #创建画板
#创建按钮
self.bt_confirm=wx.Button(panel,label=’…’)
self.bt_cancle=wx.Button(panel,label=’…’)
#创建文本
self.title=wx.StaticText(panel,label=’…’)
self.label_user=wx.StaticText(panel,label=’…’)
self.text_user=wx.TextCtrl(panel,style = wx.TE_LEFT)
self.text_password=wx.TextCtrl(panel,style = wx.TE_PASSWORD)
self.label_password=wx.StaticText(panel,label=’…’)
#创建横向容器
hsizer_user = wx.BoxSizer(wx.HORIZONTAL)
hsizer_user.Add(self.label_user,proportion = 0,flag = wx.ALL,border = 15)
hsizer_user.Add(self.text_user,proportion = 0,flag = wx.ALL,border = 15)
hsizer_pwd = wx.BoxSizer(wx.HORIZONTAL)
hsizer_pwd.Add(self.text_password,proportion = 0,flag = wx.ALL,border = 15)
hsizer_pwd.Add(self.label_password,proportion = 0,flag = wx.ALL,border = 15)
sizer_button = wx.BoxSizer(wx.HORIZONTAL)
hsizer_button.Add(self.bt_confirm,proportion = 0,flag = wx.ALL,border = 15)
hsizer_button.Add(self.bt_cancle,proportion = 0,flag = wx.ALL,border = 15)
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.TOP | wx.ALIGN_CENTER,border = 15)
panel.SetSizer(vsizer_all)
if name == ‘main__’:
app = wx.APP()
frame =MyFrame(parent =None,id=-1)
frame.Show()
app.MainLoop()
5.事件处理
5.1绑定事件
bt_confirm(wx.EVT_BUTTON,OnclickSubmit)
例子:使用事件判断用户登录
import wx
class MyFrame(wx.Frame):
def init(self,parent,id):
wx.Frame.init(self,parent,id,title=’…’,pos=(100,100),size=(300,300)
panel = wx.Panel(self) #创建画板
#创建按钮
self.bt_confirm=wx.Button(panel,label=’…’)
#绑定事件
self.bt_confirm.Bind(wx.EVT_BUTTON,self.OnclickSubmit)
self.bt_cancle=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.text_password=wx.TextCtrl(panel,style = wx.TE_PASSWORD)
self.label_password=wx.StaticText(panel,label=’…’)
#创建横向容器
hsizer_user = wx.BoxSizer(wx.HORIZONTAL)
hsizer_user.Add(self.label_user,proportion = 0,flag = wx.ALL,border = 15)
hsizer_user.Add(self.text_user,proportion = 0,flag = wx.ALL,border = 15)
hsizer_pwd = wx.BoxSizer(wx.HORIZONTAL)
hsizer_pwd.Add(self.text_password,proportion = 0,flag = wx.ALL,border = 15)
hsizer_pwd.Add(self.label_password,proportion = 0,flag = wx.ALL,border = 15)
hsizer_button = wx.BoxSizer(wx.HORIZONTAL)
hsizer_button.Add(self.bt_confirm,proportion = 0,flag = wx.ALL,border = 15)
hsizer_button.Add(self.bt_cancel,proportion = 0,flag = wx.ALL,border = 15)
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.TOP | wx.ALIGN_CENTER,border = 15)
panel.SetSizer(vsizer_all)
def OnclickSubmit(self,event):
message = “”
username = self.text_user.Getvalue()
password = self.text_password.Getvalue()
if username == ‘’ and password ==’’:
message =’…’
elif username == ‘mr’ and password ==’…’:
message =’…’
else:
message = ‘…’
wx.MessageBox(message)
def OnclickCancel(self,event):
self.text_user.Setvalue("")
self.text_password.Setvalue("")
if name == ‘main__’:
app = wx.APP()
frame =MyFrame(parent =None,id=-1)
frame.Show()
app.MainLoop()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值