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控件实例讲解相关推荐

  1. 第十四篇 表单控件 - 购物车页面

    上一篇内容 已经简单的介绍了表单控件以及表单控件的绑定,有登录界面输入的用户信息(userInfo)是否需要启动 "记住" 功能,"记住" 是一个记录登录状态, ...

  2. SAP UI5 应用开发教程之一百零四 - SAP UI5 表格控件的支持复选(Multi-Select)以及如何用代码一次选中多个表格行项目

    一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...

  3. iOS SwiftUI篇-2 UI控件 Text Button Image List

    iOS SwiftUI篇-2 UI控件 Text Button Image List Text 显示文本,相当于UILabel import SwiftUIstruct TextContentView ...

  4. Qt --- QTreeWidget 树形控件实例遇到的问题

    文章目录 说明 代码 widget.h widget.c 源码下载 遇到的问题 解决方式1 解决方式2 操作后的显示 说明 环境 Qt软件版本 : 5.9.9 实例参考书籍 : Qt5开发及实例 陆文 ...

  5. ATLAS入门篇之CascadingDropDown控件编程

    一.引言 本文将通过具体的步骤解释如何借助于数据库(Microsoft SQL Server 2005 Express Edition)数据创建一个ASP.NET AJAX 1.0 Cascading ...

  6. iOS开发UI篇—手写控件,frame,center和bounds属性

    一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4)如果是button等控件,还需考虑控件的单击事件等 (5)注意:View ...

  7. 一起撸个朋友圈吧(step5) - 控件篇【评论控件优化】

    项目地址:github.com/razerdp/Fri- 上篇链接:http://www.jianshu.com/p/4cc3f9c8a713 下篇链接:http://www.jianshu.com/ ...

  8. Avalonia跨平台入门第十三篇之Expander控件

    在前面分享的几篇中咱已经玩耍了Popup.ListBox多选.Grid动态分.RadioButton模板.控件的拖放效果.控件的置顶和置底.控件的锁定.自定义Window样式.动画效果;今天趁着空闲时 ...

  9. ESP32 开发笔记(四)littleVGL LVGL 控件学习 Arc 弧形控件

    先看效果,创建了两个Arc 弧形控件,一个可触摸拖动的默认风格,一个动画控制的自定义风格的弧形控件 ESP-IDF版本:V4.2 littleVGL版本:V7.10.0 开发板购买链接https:// ...

最新文章

  1. Leetcode代码练习(三)
  2. k8s minikube启动时指定镜像源的启动方式
  3. javascript专题:如何构建自己的js库
  4. python 统计组合用什么库_Python机器学习需要用到的库
  5. php scsi平台,三大SCSI Target平台PK:让服务器化身SAN
  6. golang 导入自定义包_二、Go基本命令及定制自定义第三方包
  7. python读取png图片只有一个图层_python实现读取并显示图片的两种方法
  8. java输出当前文件所在路径
  9. 在应用中集成科大讯飞的语音识别技术
  10. 后缀自动机Suffix Links的应用
  11. 没有密码怎么撤销工作表保护
  12. 【Java加密】JCA体系结构
  13. 字符串查找函数和错误信息报告函数
  14. IPAD1代做win10的无线拓展屏
  15. 中秋节的月亮怎么拍?不用手机和相机,程序员照样能拍出大片的感觉
  16. 计算机冷门知识大全集,阴阳师冷门小知识汇总 冷门小知识合集一览
  17. html5 播放进度,获取并设置HTML5 Video的当前进度
  18. 这些前后端性能指标,面试一问我就懵了
  19. 221. 最大正方形
  20. 帧率、码流与分辨率相关知识

热门文章

  1. 百信银行:智能银行的ABC
  2. 出行计划202203-2
  3. 如何成为一名数据科学家
  4. c语言 称重系统设计,745【毕设课设】基于单片机智能电子秤称重系统设计(原理图 pcb 论文 程序)...
  5. EOS基础全家桶(五)钱包管理
  6. Python之异常(一)
  7. SqlSugar之DbContext
  8. 服务器安全狗占用cpu,服务器安全狗之悬浮窗口功能介绍
  9. 2005年大二下学期总结
  10. dpdk安装在虚拟机上如何安装