wxPython第四篇、Choice、MessageDialog控件实例讲解
wxPython第四篇、Choice、MessageDialog控件实例讲解
前言:
wxPython有很多控件例如Button、CheckBox、StaticText、ListBox 等等(and so on),它的控件还是很多的,可以满足基本的开发需要,但是一天是不介绍不完的,慢慢介绍,不要急于求成,一口是吃不成一个胖子的!!!这些小控件的用法我会以小demo的方式逐一讲解,也或许你会发现这些小demo界面似曾相识。
讲了Button和CheckBox有没有觉得这两个控件使用方法,很是相似,至少我觉得是这样,也不知道是这个模块本事就很方便,还是python把它又封装了一遍呢。
接下来 讲一下Choice和MessageDialog,如果你前两篇很认真的看了,那么我可以说这应该也是不在话下的。
环境:
vs2017 Python3.6.6 wxPython4.0.6 (先说明一下环境以免不必要的问题出现)
效果展示:
运行程序后就可以选择下拉列表的内容了,并且下拉列表的内容被选中后,会在终端打印出来,打印出来的内容就是下来列表的内容,赶快来看一下demo吧
代码实现:
1 import wx 2 3 class ChoiceFrame(wx.Frame): 4 def __init__(self,parent): 5 wx.Frame.__init__(self, None, -1, 'Choice Example', 6 size=(250, 200)) 7 panel = wx.Panel(self, -1) 8 sampleList = ['COM1', 'COM2', 'COM3', 'COM4', 'COM5', 'COM6', 9 'COM7', 'COM8', 'COM9']
10 self.Info_txt=wx.StaticText(panel, -1, "串口号", (15, 20))
11 self.ChoiceOption=wx.Choice(panel, -1, (85, 18), choices=sampleList)
12 self.Bind(wx.EVT_CHOICE, self.ChoseBox1, self.ChoiceOption)#绑定事件
13
14 # 系统事件
15 self.Bind(wx.EVT_CLOSE, self.OnClose)
16
17 def ChoseBox1(self,event):
18 ''' 下拉列表回调函数回调函数'''
19 print(event.GetString()+"被选中")
20
21 def OnClose(self, evt):
22 '''关闭窗口事件函数'''
23 dlg = wx.MessageDialog(None, u'确定要关闭本窗口?', u'操作提示', wx.YES_NO | wx.ICON_QUESTION)
24 if(dlg.ShowModal() == wx.ID_YES):
25 self.Destroy()
26
27
28 class mainApp(wx.App):
29 """
30 在OnInit() 里边申请Frame类,这样能保证一定是在app后调用,
31 这个函数是app执行完自己的__init__函数后就会执行
32 """
33 def OnInit(self):
34 self.Frame = ChoiceFrame(None)
35 self.Frame.Show()
36 return True
37
38 """
39 在def OnExit(self):这个是窗口关闭后调用的函数,
40 把要释放的非wx资源或者要保存的放到这个函数里,
41 优雅的退出不留遗憾
42 """
43 def OnExit(self):
44 print("关闭窗口后调用")
45
46 #主函数入口
47 if __name__ == "__main__":
48 app = mainApp()
49 app.MainLoop()
(先一睹为快)
代码讲解:
1 import wx #导入wx模块
将需要的模块 使用 import 导入
3 class ChoiceFrame(wx.Frame): 4 def __init__(self,parent): 5 wx.Frame.__init__(self, None, -1, 'Choice Example', 6 size=(250, 200)) 7 panel = wx.Panel(self, -1) 8 sampleList = ['COM1', 'COM2', 'COM3', 'COM4', 'COM5', 'COM6', 9 'COM7', 'COM8', 'COM9']
10 self.Info_txt=wx.StaticText(panel, -1, "串口号", (15, 20))
11 self.ChoiceOption=wx.Choice(panel, -1, (85, 18), choices=sampleList)
12 self.Bind(wx.EVT_CHOICE, self.ChoseBox1, self.ChoiceOption)#绑定事件
13
14 # 系统事件
15 self.Bind(wx.EVT_CLOSE, self.OnClose)
第4行 中以传参的形式初始化面板的一些基础信息,主要的是 'Choice Example'
和 size=(250, 200)
这两个,'Choice Example'
不难看出第一个是面板的标题名字,size=(250, 200)
是窗口的大小,直接将需要的大小填进去即可,python的类,在调用的时候会自动调用类的.__init__
函数,所以说在这里布局UI界面即可了。
**第7行 ** 创建一个面板,接下来的控件全部放在这个面板之上。
**第8行 ** 定义一个列表,用来存储下拉列表的内容
**第10行 ** 可以说这是另一个控件,但是在这里暂时不作为重点讲解,知道他是用来显示静态文本的即可。
**第11行 ** 这行呢,就是创建一个下拉列表的控件了,但是英文确实Choise。这行的代码为wx.Choice(panel, -1, (85, 18), choices=sampleList)
panel
所指定的面板
-1
(85, 18)
Choise控件的位置信息,在之前讲过书写方式是(85, 18)
与pos=(85, 18)
这两种方式差别就在是否有pos,pos为英文位置(postion)的缩写,写不写都可以,都不会报错,但是写上显得更规范。
**第12行 ** 将Choise控件绑定到ChoseBox1
事件,参数如下:
wx.EVT_CHOICE
绑定的属性
self.ChoseBox1
被绑定的回调函数,ChoseBox1
就是函数的名字
self.ChoiceOption
控件
**第15行 ** 这行就是一个系统层的事件了
14 # 系统事件
15 self.Bind(wx.EVT_CLOSE, self.OnClose)
参数相对于基础控件的绑定事件时的参数少一点,只需要两个参数即可:
wx.EVT_CLOSE
绑定的属性
self.OnClose
所绑定的函数,具体的函数名字为OnClose
17 def ChoseBox1(self,event):
18 ''' 下拉列表回调函数'''
19 print(event.GetString()+"被选中")
这是下拉列表的回调函数,说的清楚点就是当你选择下拉列表后,会直接跳到这个函数中,然后使用GetString()
这个函数就可以获取选中的内容了。
21 def OnClose(self, evt):
22 '''关闭窗口事件函数'''
23 dlg = wx.MessageDialog(None, u'确定要关闭本窗口?', u'操作提示', wx.YES_NO | wx.ICON_QUESTION)
24 if(dlg.ShowModal() == wx.ID_YES):
25 self.Destroy()
def OnClose(self, evt):
这个函数呢就是对话框的回调了,当你想要关掉面板时,就会回调到这个函数的位置,并且弹出一个对话框
如上图所示,问你是否需要关闭这个窗口,以上的这个界面一定有好多朋友坚果的,过了今天你就可以随心所欲的使用这个控件了。。。。。
28 class mainApp(wx.App):
29 """
30 在OnInit() 里边申请Frame类,这样能保证一定是在app后调用,
31 这个函数是app执行完自己的__init__函数后就会执行
32 """
33 def OnInit(self):
34 self.Frame = ChoiceFrame(None)
35 self.Frame.Show()
36 return True
37
38 """
39 在def OnExit(self):这个是窗口关闭后调用的函数,
40 把要释放的非wx资源或者要保存的放到这个函数里,
41 优雅的退出不留遗憾
42 """
43 def OnExit(self):
44 print("关闭窗口后调用")
45
46 #主函数入口
47 if __name__ == "__main__":
48 app = mainApp()
49 app.MainLoop()
在上两篇中只考虑到了运行自己的app,没有考虑过关闭窗口之前是否需要保存一些其他重要的信息。并且将运行app与退出封装成一个类更容易管理,这些问题幸好被学长指出来,要不终究是个定时炸弹。
以下是这个小Demo用到的一些重要方法
序号 | 方法 | 说明 |
---|---|---|
1 | GetString() | 返回具有给定索引的项的标签(也可以理解为返回选择项) |
2 | SetString() | 设置下拉列表的某一项的标签(代码中未使用) |
(注:文章为我一个人整理,如果有纰漏,希望联系并告知,我会及时改正,公众号内可以获取我的联系方式)
点个赞再走吧
我会定期在公众号更新好用,好玩的教程视频
你的关注是我更新的动力
wxPython第四篇、Choice、MessageDialog控件实例讲解相关推荐
- 第十四篇 表单控件 - 购物车页面
上一篇内容 已经简单的介绍了表单控件以及表单控件的绑定,有登录界面输入的用户信息(userInfo)是否需要启动 "记住" 功能,"记住" 是一个记录登录状态, ...
- SAP UI5 应用开发教程之一百零四 - SAP UI5 表格控件的支持复选(Multi-Select)以及如何用代码一次选中多个表格行项目
一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...
- iOS SwiftUI篇-2 UI控件 Text Button Image List
iOS SwiftUI篇-2 UI控件 Text Button Image List Text 显示文本,相当于UILabel import SwiftUIstruct TextContentView ...
- Qt --- QTreeWidget 树形控件实例遇到的问题
文章目录 说明 代码 widget.h widget.c 源码下载 遇到的问题 解决方式1 解决方式2 操作后的显示 说明 环境 Qt软件版本 : 5.9.9 实例参考书籍 : Qt5开发及实例 陆文 ...
- ATLAS入门篇之CascadingDropDown控件编程
一.引言 本文将通过具体的步骤解释如何借助于数据库(Microsoft SQL Server 2005 Express Edition)数据创建一个ASP.NET AJAX 1.0 Cascading ...
- iOS开发UI篇—手写控件,frame,center和bounds属性
一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4)如果是button等控件,还需考虑控件的单击事件等 (5)注意:View ...
- 一起撸个朋友圈吧(step5) - 控件篇【评论控件优化】
项目地址:github.com/razerdp/Fri- 上篇链接:http://www.jianshu.com/p/4cc3f9c8a713 下篇链接:http://www.jianshu.com/ ...
- Avalonia跨平台入门第十三篇之Expander控件
在前面分享的几篇中咱已经玩耍了Popup.ListBox多选.Grid动态分.RadioButton模板.控件的拖放效果.控件的置顶和置底.控件的锁定.自定义Window样式.动画效果;今天趁着空闲时 ...
- ESP32 开发笔记(四)littleVGL LVGL 控件学习 Arc 弧形控件
先看效果,创建了两个Arc 弧形控件,一个可触摸拖动的默认风格,一个动画控制的自定义风格的弧形控件 ESP-IDF版本:V4.2 littleVGL版本:V7.10.0 开发板购买链接https:// ...
最新文章
- Leetcode代码练习(三)
- k8s minikube启动时指定镜像源的启动方式
- javascript专题:如何构建自己的js库
- python 统计组合用什么库_Python机器学习需要用到的库
- php scsi平台,三大SCSI Target平台PK:让服务器化身SAN
- golang 导入自定义包_二、Go基本命令及定制自定义第三方包
- python读取png图片只有一个图层_python实现读取并显示图片的两种方法
- java输出当前文件所在路径
- 在应用中集成科大讯飞的语音识别技术
- 后缀自动机Suffix Links的应用
- 没有密码怎么撤销工作表保护
- 【Java加密】JCA体系结构
- 字符串查找函数和错误信息报告函数
- IPAD1代做win10的无线拓展屏
- 中秋节的月亮怎么拍?不用手机和相机,程序员照样能拍出大片的感觉
- 计算机冷门知识大全集,阴阳师冷门小知识汇总 冷门小知识合集一览
- html5 播放进度,获取并设置HTML5 Video的当前进度
- 这些前后端性能指标,面试一问我就懵了
- 221. 最大正方形
- 帧率、码流与分辨率相关知识