搜索

Python实验报告(第12章) 实验12:GUI界面编程


发布时间: 2022-11-24 22:21:00    浏览次数:29 次

   实验12:GUI界面编程

一、实验目的和要求

1、学会应用常用控件;

2、学会使用BoxSizer布局;

3、学会事件处理。

二、实验环境

软件版本:Python 3.10 64_bit

三、实验过程

1、实例1:使用wx.StaticText输出Python之禅

(1)使用StaticText类输出中文版的Python之禅。具体代码如下:

 1 #_*-coding:utf-8 _*_
 2 import wx  3 class MyFrame(wx.Frame):  4     def __init__(self,parent,id):  5         wx.Frame.__init__(self, parent, id,title="创建StaticText类",  6                          pos=(100,100),size=(600,400))  7         # 创建画板
 8         panel = wx.Panel(self)  9         # 创建标题,并设置字体
10         title =wx.StaticText(panel,label = "Python之禅-Tim Peters",pos=(100,20)) 11         font =wx.Font(16,wx.DEFAULT,wx.FONTSTYLE_NORMAL,wx.NORMAL) 12  title.SetFont(font) 13         # 创建文本
14         wx.StaticText(panel,label="优美胜于丑陋",pos=(50,50)) 15         wx.StaticText(panel,label="明了胜于晦涩",pos=(50,70)) 16         wx.StaticText(panel,label="简洁胜于复杂",pos=(50,90)) 17         wx.StaticText(panel,label="复杂胜于凌乱",pos=(50,110)) 18         wx.StaticText(panel,label="扁平胜于嵌套",pos=(50,130)) 19         wx.StaticText(panel,label="间隔胜于紧凑",pos=(50,150)) 20         wx.StaticText(panel,label="可读性很重要",pos=(50,170)) 21         wx.StaticText(panel,label="即便假借特例的实用性之名,也不可违背这些规则",pos=(50,190)) 22         wx.StaticText(panel,label="不要包容所有错误,除非你确定需要这样做",pos=(50,210)) 23         wx.StaticText(panel,label="当存在多种可能,不要尝试去猜测",pos=(50,230)) 24         wx.StaticText(panel,label="而是尽量找一种,最好是唯一一种明显的解决方案",pos=(50,250)) 25         wx.StaticText(panel,label="虽然这并不容易,因为你不是 Python 之父",pos=(50,270)) 26         wx.StaticText(panel,label="做也许好过不做,但不假思索就动手还不如不做",pos=(50,290)) 27         wx.StaticText(panel,label="如果你无法向人描述你的方案,那肯定不是一个好方案: 反之亦然",pos=(50,310)) 28         wx.StaticText(panel,label="命名空间是一种绝妙的理念,我们应当多加利用",pos=(50,330)) 29  
30 if __name__ == "__main__": 31     app = wx.App()                        # 初始化应用
32     frame = MyFrame(parent=None,id=-1)    # 实例MyFrame类,并传递参数
33     frame.Show()                          # 显示窗口
34     app.MainLoop()                        # 调用主循环方法

(2)运行结果如图所示:

 

 

2、实例2:使用wx.TextCtrl实现登录界面

(1)使用wx.TextCtrl类和wx.StaticText类实现一个包含用户名和密码的登录界面。具体代码如下:

 1 #_*-coding:utf-8 _*_
 2 import wx  3 class MyFrame(wx.Frame):  4     def __init__(self,parent,id):  5         wx.Frame.__init__(self,parent,id,title="创建TextCtrl",size=(400,300))  6         # 创建面板
 7         panel=wx.Panel(self)  8         # 创建文本和密码输入框
 9         self.title = wx.StaticText(panel,label="输入用户名和密码",pos=(140,20)) 10         self.label_user = wx.StaticText(panel,label="用户名:",pos=(50,50)) 11         self.text_user = wx.TextCtrl(panel,pos=(100,50),size=(235,25),style=wx.TE_LEFT) 12         self.label_user = wx.StaticText(panel,pos=(50, 90),label="密 码:") 13         self.text_password = wx.TextCtrl(panel,pos=(100, 90),size=(235, 25),style=wx.TE_PASSWORD) 14 
15 if __name__ == "__main__": 16     app = wx.App()                          # 初始化应用
17     frame = MyFrame(parent=None,id=-1)      # 实例MyFrame类,并传递参数
18     frame.Show()                            # 显示窗口
19     app.MainLoop()                          # 调用主循环方法

(2)运行结果如图所示:

 

3、实例3:为登录界面添加“确定”和“取消”按钮

(1)使用wx.Button,在实例2的基础上添加“确定”和“取消”按钮具体代码如下:

 1 #_*-coding:utf-8 _*_
 2 import wx  3 class MyFrame(wx.Frame):  4     def __init__(self,parent,id):  5         wx.Frame.__init__(self,parent,id,title="创建TextCtrl类",size=(400,300))  6         # 创建面板
 7         panel = wx.Panel(self)  8         # 创建文本和密码输入框
 9         self.title = wx.StaticText(panel,label="输入用户名和密码",pos=(140,20)) 10         self.label_user = wx.StaticText(panel,label="用户名:",pos=(50,50)) 11         self.text_user = wx.TextCtrl(panel,pos=(100,50),size=(235,25),style=wx.TE_LEFT) 12         self.label_user = wx.StaticText(panel,pos=(50, 90),label="密 码:") 13         self.text_password = wx.TextCtrl(panel,pos=(100, 90),size=(235, 25),style=wx.TE_PASSWORD) 14         # 创建“确定”和“取消”按钮
15         self.bt_confirm = wx.Button(panel,label="确定",pos=(105,130)) 16         self.bt_cancel  = wx.Button(panel,label="取消",pos=(195,130)) 17 
18 if __name__ == "__main__": 19     app = wx.App()                          # 初始化
20     frame = MyFrame(parent=None,id=-1)      # 实例MyFrame类,并传递参数
21     frame.Show()                            # 显示窗口
22     app.MainLoop()                          # 调用主循环方法

(2)运行结果如图所示:

 

4、实例4:使用BoxSizer设置登录界面布局

(1)使用BoxSizer布局方式,实现实例3的界面布局效果。具体代码如下:

 1 # _*-coding;utf-8 _*.
 2 import wx  3 class MyFrame(wx.Frame):  4     def __init__(self,parent,id):  5         wx.Frame.__init__(self,parent,id,"用户登录",size=(400,300))  6         # 创建面板
 7         panel = wx.Panel(self)  8         # 创建“确定”和“取消”按钮,并绑定事件
 9         self.bt_confirm = wx.Button(panel,label="确定") 10         self.bt_cancel = wx.Button(panel,label="取消") 11         # 创建文本,左对齐
12         self.title = wx.StaticText(panel,label="请输入用户名和密码") 13         self.label_user = wx.StaticText(panel,label="用户名:") 14         self.text_user = wx.TextCtrl(panel,style=wx.TE_LEFT) 15         self.label_pwd = wx.StaticText(panel,label="密 码:") 16         self.text_password = wx.TextCtrl(panel,style=wx.TE_PASSWORD) 17         # 添加容器,容器中控件横向排列
18         hsizer_user = wx.BoxSizer(wx.HORIZONTAL) 19         hsizer_user.Add(self.label_user,proportion=0,flag=wx.ALL,border=5) 20         hsizer_user.Add(self.text_user,proportion=1,flag=wx.ALL,border=5) 21         hsizer_pwd = wx.BoxSizer(wx.HORIZONTAL) 22         hsizer_pwd.Add(self.label_pwd,proportion=0,flag=wx.ALL,border=5) 23         hsizer_pwd.Add(self.text_password,proportion=1,flag=wx.ALL,border=5) 24         hsizer_button = wx.BoxSizer(wx.HORIZONTAL) 25         hsizer_button.Add(self.bt_confirm,proportion=0,flag=wx.ALIGN_CENTER,border=5) 26         hsizer_button.Add(self.bt_cancel,proportion=0,flag=wx.ALIGN_CENTER,border=5) 27         #添加容器,容器中的控件纵向排列
28         vsizer_all = wx.BoxSizer(wx.VERTICAL) 29         vsizer_all.Add(self.title,proportion=0,flag=wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER, 30                        border=15) 31         vsizer_all.Add(hsizer_user,proportion=0,flag=wx.EXPAND | wx.LEFT | wx.RIGHT,border=45) 32         vsizer_all.Add(hsizer_pwd,proportion=0,flag=wx.EXPAND| wx.LEFT | wx.RIGHT,border=45) 33         vsizer_all.Add(hsizer_button,proportion=0,flag=wx.ALIGN_CENTER | wx.TOP,border=15) 34  panel.SetSizer(vsizer_all) 35         
36 if __name__ == "__main__": 37     app = wx.App()                      # 初始化
38     frame =MyFrame(parent=None,id=-1)   # 实例化MyFrame类,并传递参数
39     frame.Show()                        # 显示窗口
40     app.MainLoop()                      # 调用主循环方法

(2)运行结果如图所示: 

 

 

5、实例5:使用事件判断用户登录

(1)在实例 04 的基础上,分别为“确定”和“取消”按钮添加单击事件。当用户输入用户名和密码后,单击“确定”按钮,如果输入的用户名为“mr”,并且密码为“mrsoft”,则弹出对话框提示“登录成功”否则提示“用户名和密码不匹配”。当用户单击“取消”按钮时,清空用户输入的用户名和密码。具体代码如下:

 1 # _*_coding:utf-8 _*_  2 import wx  3 class MyFrame(wx.Frame):  4 def __init__ (self,parent,id):  5 wx.Frame.__init__(self,parent,id,"用户登录",size=(400,300))  6 # 创建面板  7 panel = wx.Panel(self)  8  9 # 创建“确定”和“取消”按钮,并绑定事件 10 self.bt_confirm = wx.Button(panel,label="确定") 11  self.bt_confirm.Bind(wx.EVT_BUTTON,self.OnclickSubmit) 12 self.bt_cancel = wx.Button(panel,label="取消") 13  self.bt_cancel.Bind(wx.EVT_BUTTON,self.OnclickCancel) 14 # 创建文本,左对齐 15 self.title = wx.StaticText(panel,label="请输入用户名和密码") 16 self.label_user = wx.StaticText(panel,label="用户名:") 17 self.text_user = wx.TextCtrl(panel,style=wx.TE_LEFT) 18 self.label_pwd = wx.StaticText(panel,label="密 码:") 19 self.text_password = wx.TextCtrl(panel,style=wx.TE_PASSWORD) 20 # 添加容器,容器中控件横向排列 21 hsizer_user = wx.BoxSizer(wx.HORIZONTAL) 22 hsizer_user.Add(self.label_user,proportion=0,flag=wx.ALL,border=5) 23 hsizer_user.Add(self.text_user,proportion=1,flag=wx.ALL,border=5) 24 hsizer_pwd = wx.BoxSizer(wx.HORIZONTAL) 25 hsizer_pwd.Add(self.label_pwd,proportion=0,flag=wx.ALL,border=5) 26 hsizer_pwd.Add(self.text_password,proportion=1,flag=wx.ALL,border=5) 27 hsizer_button = wx.BoxSizer(wx.HORIZONTAL) 28 hsizer_button.Add(self.bt_confirm,proportion=0,flag=wx.ALIGN_CENTER,border=5) 29 hsizer_button.Add(self.bt_cancel,proportion=0,flag=wx.ALIGN_CENTER,border=5) 30 #添加容器,容器中的控件纵向排列 31 vsizer_all = wx.BoxSizer(wx.VERTICAL) 32 vsizer_all.Add(self.title,proportion=0,flag=wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER, 33 border=15) 34 vsizer_all.Add(hsizer_user,proportion=0,flag=wx.EXPAND | wx.LEFT | wx.RIGHT,border=45) 35 vsizer_all.Add(hsizer_pwd,proportion=0,flag=wx.EXPAND| wx.LEFT | wx.RIGHT,border=45) 36 vsizer_all.Add(hsizer_button,proportion=0,flag=wx.ALIGN_CENTER | wx.TOP,border=15) 37  panel.SetSizer(vsizer_all) 38 39 def OnclickSubmit(self,event): 40 """单击确定按钮,执行方法""" 41 message ="" 42 username = self.text_user.GetValue() # 获取输入的用户名 43 password = self.text_password.GetValue() # 获取输入的密码 44 if username =="" or password =="" : # 判断用户名或密码是否为空 45 message ="用户名或密码不能为空" 46 elif username =="mr" and password =="mrsoft": # 用户名和密码正确 47 message ="登录成功" 48 else: 49 message ="用户名和密码不匹配" # 用户名或密码错误 50 wx.MessageBox(message) # 弹出提示框 51 52 def OnclickCancel(self,event): 53 """单击取消按钮,执行方法""" 54 self.text_user.SetValue("") # 清空输入的用户名 55 self.text_password.SetValue("") # 清空输入的密码 56 57 if __name__ == "__main__": 58 app = wx.App() # 初始化应用 59 frame = MyFrame(parent=None,id=-1) # 实例MyFrame类,并传递参数 60 frame.Show() # 显示窗口 61 app.MainLoop() # 调用主循环方法 

(2)运行结果如图所示:

 

 

一、实验目的和要求

1、学会应用常用控件;

2、学会使用BoxSizer布局;

3、学会事件处理。

二、实验环境

软件版本:Python 3.10 64_bit

三、实验过程

1、实例1:使用wx.StaticText输出Python之禅

(1)使用StaticText类输出中文版的Python之禅。具体代码如下:

 1 #_*-coding:utf-8 _*_
 2 import wx  3 class MyFrame(wx.Frame):  4     def __init__(self,parent,id):  5         wx.Frame.__init__(self, parent, id,title="创建StaticText类",  6                          pos=(100,100),size=(600,400))  7         # 创建画板
 8         panel = wx.Panel(self)  9         # 创建标题,并设置字体
10         title =wx.StaticText(panel,label = "Python之禅-Tim Peters",pos=(100,20)) 11         font =wx.Font(16,wx.DEFAULT,wx.FONTSTYLE_NORMAL,wx.NORMAL) 12  title.SetFont(font) 13         # 创建文本
14         wx.StaticText(panel,label="优美胜于丑陋",pos=(50,50)) 15         wx.StaticText(panel,label="明了胜于晦涩",pos=(50,70)) 16         wx.StaticText(panel,label="简洁胜于复杂",pos=(50,90)) 17         wx.StaticText(panel,label="复杂胜于凌乱",pos=(50,110)) 18         wx.StaticText(panel,label="扁平胜于嵌套",pos=(50,130)) 19         wx.StaticText(panel,label="间隔胜于紧凑",pos=(50,150)) 20         wx.StaticText(panel,label="可读性很重要",pos=(50,170)) 21         wx.StaticText(panel,label="即便假借特例的实用性之名,也不可违背这些规则",pos=(50,190)) 22         wx.StaticText(panel,label="不要包容所有错误,除非你确定需要这样做",pos=(50,210)) 23         wx.StaticText(panel,label="当存在多种可能,不要尝试去猜测",pos=(50,230)) 24         wx.StaticText(panel,label="而是尽量找一种,最好是唯一一种明显的解决方案",pos=(50,250)) 25         wx.StaticText(panel,label="虽然这并不容易,因为你不是 Python 之父",pos=(50,270)) 26         wx.StaticText(panel,label="做也许好过不做,但不假思索就动手还不如不做",pos=(50,290)) 27         wx.StaticText(panel,label="如果你无法向人描述你的方案,那肯定不是一个好方案: 反之亦然",pos=(50,310)) 28         wx.StaticText(panel,label="命名空间是一种绝妙的理念,我们应当多加利用",pos=(50,330)) 29  
30 if __name__ == "__main__": 31     app = wx.App()                        # 初始化应用
32     frame = MyFrame(parent=None,id=-1)    # 实例MyFrame类,并传递参数
33     frame.Show()                          # 显示窗口
34     app.MainLoop()                        # 调用主循环方法

(2)运行结果如图所示:

 

 

2、实例2:使用wx.TextCtrl实现登录界面

(1)使用wx.TextCtrl类和wx.StaticText类实现一个包含用户名和密码的登录界面。具体代码如下:

 1 #_*-coding:utf-8 _*_
 2 import wx  3 class MyFrame(wx.Frame):  4     def __init__(self,parent,id):  5         wx.Frame.__init__(self,parent,id,title="创建TextCtrl",size=(400,300))  6         # 创建面板
 7         panel=wx.Panel(self)  8         # 创建文本和密码输入框
 9         self.title = wx.StaticText(panel,label="输入用户名和密码",pos=(140,20)) 10         self.label_user = wx.StaticText(panel,label="用户名:",pos=(50,50)) 11         self.text_user = wx.TextCtrl(panel,pos=(100,50),size=(235,25),style=wx.TE_LEFT) 12         self.label_user = wx.StaticText(panel,pos=(50, 90),label="密 码:") 13         self.text_password = wx.TextCtrl(panel,pos=(100, 90),size=(235, 25),style=wx.TE_PASSWORD) 14 
15 if __name__ == "__main__": 16     app = wx.App()                          # 初始化应用
17     frame = MyFrame(parent=None,id=-1)      # 实例MyFrame类,并传递参数
18     frame.Show()                            # 显示窗口
19     app.MainLoop()                          # 调用主循环方法

(2)运行结果如图所示:

 

3、实例3:为登录界面添加“确定”和“取消”按钮

(1)使用wx.Button,在实例2的基础上添加“确定”和“取消”按钮具体代码如下:

 1 #_*-coding:utf-8 _*_
 2 import wx  3 class MyFrame(wx.Frame):  4     def __init__(self,parent,id):  5         wx.Frame.__init__(self,parent,id,title="创建TextCtrl类",size=(400,300))  6         # 创建面板
 7         panel = wx.Panel(self)  8         # 创建文本和密码输入框
 9         self.title = wx.StaticText(panel,label="输入用户名和密码",pos=(140,20)) 10         self.label_user = wx.StaticText(panel,label="用户名:",pos=(50,50)) 11         self.text_user = wx.TextCtrl(panel,pos=(100,50),size=(235,25),style=wx.TE_LEFT) 12         self.label_user = wx.StaticText(panel,pos=(50, 90),label="密 码:") 13         self.text_password = wx.TextCtrl(panel,pos=(100, 90),size=(235, 25),style=wx.TE_PASSWORD) 14         # 创建“确定”和“取消”按钮
15         self.bt_confirm = wx.Button(panel,label="确定",pos=(105,130)) 16         self.bt_cancel  = wx.Button(panel,label="取消",pos=(195,130)) 17 
18 if __name__ == "__main__": 19     app = wx.App()                          # 初始化
20     frame = MyFrame(parent=None,id=-1)      # 实例MyFrame类,并传递参数
21     frame.Show()                            # 显示窗口
22     app.MainLoop()                          # 调用主循环方法

(2)运行结果如图所示:

 

4、实例4:使用BoxSizer设置登录界面布局

(1)使用BoxSizer布局方式,实现实例3的界面布局效果。具体代码如下:

 1 # _*-coding;utf-8 _*.
 2 import wx  3 class MyFrame(wx.Frame):  4     def __init__(self,parent,id):  5         wx.Frame.__init__(self,parent,id,"用户登录",size=(400,300))  6         # 创建面板
 7         panel = wx.Panel(self)  8         # 创建“确定”和“取消”按钮,并绑定事件
 9         self.bt_confirm = wx.Button(panel,label="确定") 10         self.bt_cancel = wx.Button(panel,label="取消") 11         # 创建文本,左对齐
12         self.title = wx.StaticText(panel,label="请输入用户名和密码") 13         self.label_user = wx.StaticText(panel,label="用户名:") 14         self.text_user = wx.TextCtrl(panel,style=wx.TE_LEFT) 15         self.label_pwd = wx.StaticText(panel,label="密 码:") 16         self.text_password = wx.TextCtrl(panel,style=wx.TE_PASSWORD) 17         # 添加容器,容器中控件横向排列
18         hsizer_user = wx.BoxSizer(wx.HORIZONTAL) 19         hsizer_user.Add(self.label_user,proportion=0,flag=wx.ALL,border=5) 20         hsizer_user.Add(self.text_user,proportion=1,flag=wx.ALL,border=5) 21         hsizer_pwd = wx.BoxSizer(wx.HORIZONTAL) 22         hsizer_pwd.Add(self.label_pwd,proportion=0,flag=wx.ALL,border=5) 23         hsizer_pwd.Add(self.text_password,proportion=1,flag=wx.ALL,border=5) 24         hsizer_button = wx.BoxSizer(wx.HORIZONTAL) 25         hsizer_button.Add(self.bt_confirm,proportion=0,flag=wx.ALIGN_CENTER,border=5) 26         hsizer_button.Add(self.bt_cancel,proportion=0,flag=wx.ALIGN_CENTER,border=5) 27         #添加容器,容器中的控件纵向排列
28         vsizer_all = wx.BoxSizer(wx.VERTICAL) 29         vsizer_all.Add(self.title,proportion=0,flag=wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER, 30                        border=15) 31         vsizer_all.Add(hsizer_user,proportion=0,flag=wx.EXPAND | wx.LEFT | wx.RIGHT,border=45) 32         vsizer_all.Add(hsizer_pwd,proportion=0,flag=wx.EXPAND| wx.LEFT | wx.RIGHT,border=45) 33         vsizer_all.Add(hsizer_button,proportion=0,flag=wx.ALIGN_CENTER | wx.TOP,border=15) 34  panel.SetSizer(vsizer_all) 35         
36 if __name__ == "__main__": 37     app = wx.App()                      # 初始化
38     frame =MyFrame(parent=None,id=-1)   # 实例化MyFrame类,并传递参数
39     frame.Show()                        # 显示窗口
40     app.MainLoop()                      # 调用主循环方法

(2)运行结果如图所示: 

 

 

5、实例5:使用事件判断用户登录

(1)在实例 04 的基础上,分别为“确定”和“取消”按钮添加单击事件。当用户输入用户名和密码后,单击“确定”按钮,如果输入的用户名为“mr”,并且密码为“mrsoft”,则弹出对话框提示“登录成功”否则提示“用户名和密码不匹配”。当用户单击“取消”按钮时,清空用户输入的用户名和密码。具体代码如下:

 1 # _*_coding:utf-8 _*_  2 import wx  3 class MyFrame(wx.Frame):  4 def __init__ (self,parent,id):  5 wx.Frame.__init__(self,parent,id,"用户登录",size=(400,300))  6 # 创建面板  7 panel = wx.Panel(self)  8  9 # 创建“确定”和“取消”按钮,并绑定事件 10 self.bt_confirm = wx.Button(panel,label="确定") 11  self.bt_confirm.Bind(wx.EVT_BUTTON,self.OnclickSubmit) 12 self.bt_cancel = wx.Button(panel,label="取消") 13  self.bt_cancel.Bind(wx.EVT_BUTTON,self.OnclickCancel) 14 # 创建文本,左对齐 15 self.title = wx.StaticText(panel,label="请输入用户名和密码") 16 self.label_user = wx.StaticText(panel,label="用户名:") 17 self.text_user = wx.TextCtrl(panel,style=wx.TE_LEFT) 18 self.label_pwd = wx.StaticText(panel,label="密 码:") 19 self.text_password = wx.TextCtrl(panel,style=wx.TE_PASSWORD) 20 # 添加容器,容器中控件横向排列 21 hsizer_user = wx.BoxSizer(wx.HORIZONTAL) 22 hsizer_user.Add(self.label_user,proportion=0,flag=wx.ALL,border=5) 23 hsizer_user.Add(self.text_user,proportion=1,flag=wx.ALL,border=5) 24 hsizer_pwd = wx.BoxSizer(wx.HORIZONTAL) 25 hsizer_pwd.Add(self.label_pwd,proportion=0,flag=wx.ALL,border=5) 26 hsizer_pwd.Add(self.text_password,proportion=1,flag=wx.ALL,border=5) 27 hsizer_button = wx.BoxSizer(wx.HORIZONTAL) 28 hsizer_button.Add(self.bt_confirm,proportion=0,flag=wx.ALIGN_CENTER,border=5) 29 hsizer_button.Add(self.bt_cancel,proportion=0,flag=wx.ALIGN_CENTER,border=5) 30 #添加容器,容器中的控件纵向排列 31 vsizer_all = wx.BoxSizer(wx.VERTICAL) 32 vsizer_all.Add(self.title,proportion=0,flag=wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER, 33 border=15) 34 vsizer_all.Add(hsizer_user,proportion=0,flag=wx.EXPAND | wx.LEFT | wx.RIGHT,border=45) 35 vsizer_all.Add(hsizer_pwd,proportion=0,flag=wx.EXPAND| wx.LEFT | wx.RIGHT,border=45) 36 vsizer_all.Add(hsizer_button,proportion=0,flag=wx.ALIGN_CENTER | wx.TOP,border=15) 37  panel.SetSizer(vsizer_all) 38 39 def OnclickSubmit(self,event): 40 """单击确定按钮,执行方法""" 41 message ="" 42 username = self.text_user.GetValue() # 获取输入的用户名 43 password = self.text_password.GetValue() # 获取输入的密码 44 if username =="" or password =="" : # 判断用户名或密码是否为空 45 message ="用户名或密码不能为空" 46 elif username =="mr" and password =="mrsoft": # 用户名和密码正确 47 message ="登录成功" 48 else: 49 message ="用户名和密码不匹配" # 用户名或密码错误 50 wx.MessageBox(message) # 弹出提示框 51 52 def OnclickCancel(self,event): 53 """单击取消按钮,执行方法""" 54 self.text_user.SetValue("") # 清空输入的用户名 55 self.text_password.SetValue("") # 清空输入的密码 56 57 if __name__ == "__main__": 58 app = wx.App() # 初始化应用 59 frame = MyFrame(parent=None,id=-1) # 实例MyFrame类,并传递参数 60 frame.Show() # 显示窗口 61 app.MainLoop() # 调用主循环方法 

(2)运行结果如图所示:

 

 

免责声明 Python实验报告(第12章) 实验12:GUI界面编程,资源类别:文本, 浏览次数:29 次, 文件大小:-- , 由本站蜘蛛搜索收录2022-11-24 10:21:00。此页面由程序自动采集,只作交流和学习使用,本站不储存任何资源文件,如有侵权内容请联系我们举报删除, 感谢您对本站的支持。 原文链接:https://www.cnblogs.com/xiakong/p/16923565.html