2011-04-09 99 views
1

我有这个简单的对话外:wxPython的:从对话框获取值,并且使用它的对话框类

import wx 
import wx.lib.sized_controls as sc 
import time 
import datetime 
class Dialog(sc.SizedDialog): 
    def __init__(self, parent, id): 
     sc.SizedDialog.__init__(self, None, -1, "AuTel", style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER)    
     pane = self.GetContentsPane() 
     pane.SetSizerType("form") 

     wx.StaticText(pane, -1, "N1:") 
     N1_BOX = wx.SpinCtrl(pane, -1, "", (40,40), (60,-1)) 
     N1_BOX.SetRange(1,1000) 
     N1_BOX.SetValue(2) 

     wx.StaticText(pane, -1, "N2:") 
     N2_BOX = wx.SpinCtrl(pane, -1, "", (40,40), (60,-1)) 
     N2_BOX.SetRange(1,1000) 
     N2_BOX.SetValue(10) 

     wx.StaticText(pane, -1, "T1:") 
     T1_BOX = wx.SpinCtrl(pane, -1, "", (40,40), (60,-1)) 
     T1_BOX.SetRange(1,60) 
     T1_BOX.SetValue(4) 

     wx.StaticText(pane, -1, "T2:") 
     T2_BOX = wx.SpinCtrl(pane, -1, "", (40,40), (60,-1)) 
     T2_BOX.SetRange(1,60) 
     T2_BOX.SetValue(5) 

     RUN_BUTTON = self.SetButtonSizer(self.CreateStdDialogButtonSizer(wx.OK | wx.CANCEL)) 

     self.Fit() 
     self.SetMinSize(self.GetSize()) 

app = wx.PySimpleApp() 
dlg = Dialog(None, -1) 
dlgrslt = dlg.ShowModal() 

if dlgrslt != wx.ID_OK: 
print ('Exiting..') 
exit 
else: 
    pass 
    print (N1+N2/T1-T2) 

dlg.Destroy() 
app.MainLoop() 

当我点击确定,N1_BOX,N2_BOX,T1_BOX和T2_BOX的价值观,我需要采取,那么稍后我可以在脚本中使用它们作其他用途。为了达到这个目的,我在剧本中应该做什么?另外,如何让另一个窗口显示N1 + N2/T1-T2的结果?我需要把这个窗口添加到对话窗口,但我不知道我该怎么做。 对不起我的基本问题,但我是编程世界的新手。

问候, 阿姆鲁

回答

4

1:访问输入值

最基本的方法就是使每一个“盒子”类的成员。

即无论你写N1_BOX,放'self.N1_BOX'。

因此,在你调用代码,您可以访问dlg.N1_BOX.GetValue()

valX = dlg.N1_BOX.GetValue()+dlg.N2_BOX.GetValue()/dlg.T1_BOX.GetValue()+dlg.T2_BOX.GetValue() 
print valX 

2: '结果对话框':

创建第二个类,说ResultDialog,与init方法中的额外参数。 然后,您可以将新值传入此额外参数。

所以,说你已经设置valX变量,那么您可以在通过它像这样:

dlg2= ResultDialog(None,-1,str(valX)) 

注意使用STR()与valX数字转换为演示文稿的标签上。这可以在init方法内完成,但我把它放在这里作为提示。

HTH