基于wxPython的GUI如何实现输入对话框

  介绍

这篇文章将为大家详细讲解有关基于wxPython的GUI如何实现输入对话框,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

在程序输入中,有时会要求同时改变多个参数值,而且类型也不尽相同,

这时TextEntryDialog就显得不适用了.WxInput模块则比较彻底的解决了这个问题。

比如我有三个值要用户交互式设置,一个是int数,一个是str,一个是浮动,先看示例文件:

得到WInput  import  InputBox   值={& # 39;int # 39;: 1 & # 39;字符串# 39;:& # 39;却;能够is 字符串# 39;,& # 39;浮动# 39;:3.5}   title=& # 39; Setting 价值观:& # 39;   右值=InputBox(标题、值)   打印(右值)

显示GUI如下:

基于wxPython的GUI如何实现输入对话框

上面的代码的关键是设置字典值的值。

WxInput会自动根据字典值的内容生成输入界面,

而且返回值的类型确保和原始类型一样。

再比如程序中有任意两个参数方法和num要设置,那么如下就可了:

title=& # 39; Setting 价值观:& # 39;   值={& # 39;方法# 39;:& # 39;重对数# 39;,& # 39;价值# 39;:3.5}   右值=InputBox(标题、值)

生成的界面如下:

基于wxPython的GUI如何实现输入对话框

WxInput模块的代码如下:

# - *安康;编码:utf-8  - * -   # ~,# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   # ~模块:wlab   # ~=WInput.py文件名   # ~,函数:天气的输入对话框   # ~,作者:吴徐平   # ~,日期:2013-04-28   # ~,邮件:539688300 @qq.com   # ~,# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   import 天气   import  wx.lib.sized_controls  as  wxsc   # ~,# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   # ~,# set  value  for 小部件(,StaticText 以及TextCtrl),高度   wh=30   # ~,# set  value  for  max  width 次   mwt=8   # ~,# set  value  for  wh 次   什么=3   # ~,# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   class  InputDialog (wxsc.SizedDialog):   ,   ,def  __init__(自我,title=& # 39; Setting 价值观:& # 39;,值={& # 39;int # 39;: 1 & # 39;字符串# 39;:& # 39;却;能够is 字符串# 39;,& # 39;浮动# 39;:3.5}):   ,& # 39;& # 39;& # 39;   ,# ~ using  it  as 遵循:   ,# ~ dialog =, InputDialog (title=& # 39; Setting 价值观:& # 39;,值={& # 39;int # 39;: 1 & # 39;字符串# 39;:& # 39;却;能够is 字符串# 39;,& # 39;浮动# 39;:3.5})   ,# ~ just  for 测试:   ,# ~ dialog =, InputDialog ()   ,& # 39;& # 39;& # 39;,,=,,style  wx.DEFAULT_DIALOG_STYLE  | wx.RESIZE_BORDER   ,wxsc.SizedDialog.__init__(自我、父母=None, id=1,标题=标题,样式=风格),   ,   ,self.originvalues=values.copy ()   ,self.modifiedvalues=values.copy ()=,,self.pane  self.GetContentsPane ()   ,self.pane.SetSizerType (“form")   ,,   ,   ,maxlen1=mwt *马克斯([len (str(关键),for  key 拷贝值))   ,if  maxlen1< wh *说:   ,maxlen1=wh *什么   ,,   ,maxlen2=mwt *马克斯([len (str(值(例子))),for  key 拷贝值))   ,if  maxlen2< wh *说:   ,maxlen2=wh *什么   ,,   ,for  key  self.modifiedvalues拷贝:   keyStr才能=str(键)   标签才能=keyStr + & # 39;,: & # 39;   时间=StaticText 才能;wx.StaticText(父=self.pane id=1,标签=标签,风格=wx.ALIGN_RIGHT)   StaticText.SetInitialSize才能((maxlen1 wh))   价值才能=https://www.yisu.com/zixun/str (self.modifiedvalues[主要])   TextCtrl=wx.TextCtrl(父=自我。窗格中,id=1,值=值)   TextCtrl.SetInitialSize ((maxlen2 wh))   TextCtrl.SetSizerProps(扩大=True)   # ~为TextCtrl设置一个名称,以后我们可以用wx.FindWindowByName ()   TextCtrl.Name=' TC_ + str (keyStr)   # StaticText.Name=' ST_ + str (keyStr)         # ~ #添加对话框按钮   self.SetButtonSizer (self.CreateStdDialogButtonSizer(天气。好| wx.CANCEL))      self.Fit ()   self.Center ()      def GetOriginValue(自我):   “‘   # ~如果用户选择的天气。ID_CANCEL,然后返回originvalues   “‘   返回self.originvalues      def GetValue(自我):   “‘   # ~如果用户选择的天气。ID_OK,然后返回self.modifiedvalues   “‘   在self.modifiedvalues关键:   keyStr=str(键)   TextCtrlName=' TC_ + str (keyStr)   TextCtrl=self.FindWindowByName (TextCtrlName)   ovk=self.modifiedvalues(例子)   如果(int类型(ovk)==):   self.modifiedvalues int[主要]=(TextCtrl.GetValue () .strip ())   elif(类型(ovk)==浮动):   self.modifiedvalues[主要]=浮动(TextCtrl.GetValue () .strip ())   其他:   self.modifiedvalues(例子)=str (TextCtrl.GetValue ())      返回self.modifiedvalues      # ~ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   def InputBox (title=吧柚弥怠敝?{“int”: 1、“字符串”:“这是字符串”,“浮动”:3.5}):   “‘   # ~>>值={“int”: 1、“字符串”:“这是字符串”,“浮动”:3.5}   # ~>> title='设置值:   # ~>>右值=InputBox(标题、值)   # ~>>打印(右值):   “‘   应用=wx.PySimpleApp ()   对话框=InputDialog(标题、值==值)   如果dialog.ShowModal ()==wx.ID_OK:   值=dialog.GetValue ()   其他:   值=dialog.GetOriginValue ()      dialog.Destroy ()   app.MainLoop ()   返回值      # # ~ #测试InputBox   # if __name__==癬_main__”:   #值={“int”: 1、“字符串”:“这是字符串”,“浮动”:3.5}   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

基于wxPython的GUI如何实现输入对话框