热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

wxpythonbind自定义_如何获取wxPython自定义Dialog的数据?

wxPython的许多例子都介绍了wx自带的对话框,许多都是单一控件或者系统自定义控件,但是用户自定义控件如何获取数据都没有提供。例如,我

wxPython的许多例子都介绍了wx自带的对话框,许多都是单一控件或者系统自定义控件,但是用户自定义控件如何获取数据都没有提供。

例如,我要设置串口,必然在一个自定义对话框中收集串口名称、波特率、数据宽度、校验方式、校验位等,或采用Choice,或采用TextCtrl来获取。那么这些数据如何传递给Frame对象呢?

难道是通过全局对象来传递?

import wx

class SerialConfDialog(wx.Dialog):

def __init__(self, parent, ID, title, size=wx.DefaultSize, pos=wx.DefaultPosition,

style=wx.DEFAULT_DIALOG_STYLE, ports=[]):

pre = wx.PreDialog()

pre.Create(parent, ID, title, pos, size, style)

self.PostCreate(pre)

sizer = wx.BoxSizer(wx.VERTICAL)

label = wx.StaticText(self, -1, "UART/BLE/USB VCP settings")

sizer.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5)

box = wx.BoxSizer(wx.HORIZONTAL)

label = wx.StaticText(self, -1, "Serial:")

box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5)

port = wx.Choice(self, -1, (100,50), choices=ports)

if len(ports):

port.SetSelection(0)

box.Add(port, 1, wx.ALIGN_CENTRE|wx.ALL, 5)

sizer.Add(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)

bauds = ['300','600','1200','2400','4800','7200','9600',\

'14400','19200','28800','38400','43000','56000',\

'57600','115200','230400']

box = wx.BoxSizer(wx.HORIZONTAL)

label = wx.StaticText(self, -1, "Baud:")

box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5)

baud = wx.Choice(self, -1, (100,50), choices=bauds)

baud.SetSelection(6)

box.Add(baud, 1, wx.ALIGN_CENTRE|wx.ALL, 5)

sizer.Add(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)

widths = ['5','6','7','8']

box = wx.BoxSizer(wx.HORIZONTAL)

label = wx.StaticText(self, -1, "Width:")

box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5)

width = wx.Choice(self, -1, (100,50), choices=widths)

width.SetSelection(3)

box.Add(width, 1, wx.ALIGN_CENTRE|wx.ALL, 5)

sizer.Add(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)

checks = ['None','Even','Odd','Mark','Space']

box = wx.BoxSizer(wx.HORIZONTAL)

label = wx.StaticText(self, -1, "CRC:")

box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5)

check = wx.Choice(self, -1, (100,50), choices=checks)

check.SetSelection(0)

box.Add(check, 1, wx.ALIGN_CENTRE|wx.ALL, 5)

sizer.Add(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)

stops = ['1','1.5','2']

box = wx.BoxSizer(wx.HORIZONTAL)

label = wx.StaticText(self, -1, "Stop:")

box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5)

stop = wx.Choice(self, -1, (100,50), choices=stops)

stop.SetSelection(0)

box.Add(stop, 1, wx.ALIGN_CENTRE|wx.ALL, 5)

sizer.Add(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)

line = wx.StaticLine(self, -1, size=(20,-1), style=wx.LI_HORIZONTAL)

sizer.Add(line, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.TOP, 5)

btnsizer = wx.StdDialogButtonSizer()

if wx.Platform != "__WXMSW__":

btn = wx.ContextHelpButton(self)

btnsizer.AddButton(btn)

btn = wx.Button(self, wx.ID_OK)

#btn.SetHelpText("The OK button completes the dialog")

btn.SetDefault()

btnsizer.AddButton(btn)

btn = wx.Button(self, wx.ID_CANCEL)

#btn.SetHelpText("The Cancel button cancels the dialog. (Cool, huh?)")

btnsizer.AddButton(btn)

btnsizer.Realize()

sizer.Add(btnsizer, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)

self.SetSizer(sizer)

sizer.Fit(self)

class ToolbarFrame(wx.Frame):

def __init__(self, parent, id):

wx.Frame.__init__(self, parent, id, "Radio Terminal",

size=(450,500))

panel = wx.Panel(self)

panel.SetBackgroundColour("White")

# Menu init code here.....

self.Bind(wx.EVT_MENU, self.OnSerialConf, miSerial)

def OnSerialConf(self, event):

dlg = SerialConfDialog(self, -1, "Serial Configurations", \

size=(350,200), style=wx.DEFAULT_DIALOG_STYLE, ports=self.ports)

val = dlg.ShowModal()

if val == wx.ID_OK:

print "You pressed OK"

else:

print "You pressed Cancel"

dlg.Destroy()



推荐阅读
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 本文介绍了如何使用MATLAB调用摄像头进行人脸检测和识别。首先需要安装扩展工具,并下载安装OS Generic Video Interface。然后使用MATLAB的机器视觉工具箱中的VJ算法进行人脸检测,可以直接调用CascadeObjectDetector函数进行检测。同时还介绍了如何调用摄像头进行人脸识别,并对每一帧图像进行识别。最后,给出了一些相关的参考资料和实例。 ... [详细]
  • STM32 IO口模拟串口通讯
    转自:http:ziye334.blog.163.comblogstatic224306191201452833850647前阵子,调项目时需要用到低波 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • Android源码中的Builder模式及其作用
    本文主要解释了什么是Builder模式以及其作用,并结合Android源码来分析Builder模式的实现。Builder模式是将产品的设计、表示和构建进行分离,通过引入建造者角色,简化了构建复杂产品的流程,并且使得产品的构建可以灵活适应变化。使用Builder模式可以解决开发者需要关注产品表示和构建步骤的问题,并且当构建流程发生变化时,无需修改代码即可适配新的构建流程。 ... [详细]
  • ①页面初始化----------收到客户端的请求,产生相应页面的Page对象,通过Page_Init事件进行page对象及其控件的初始化.②加载视图状态-------ViewSta ... [详细]
author-avatar
台州路桥古筝音乐家教
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有