wxPython:从Dialog获取值,并在Dialog类之外使用它

时间:2011-04-09 08:31:33

标签: 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()

我需要点击OK,N1_BOX,N2_BOX,T1_BOX和T2_BOX的值,然后我可以在以后的脚本中使用它们用于其他目的。为了达到这个目的,我在剧本中该怎么办?另外,如何制作另一个窗口来显示N1 + N2 / T1-T2的结果?我需要这个窗口附加对话框窗口,但我不知道我该怎么做。 对不起我的基本问题,但我是编程世界的新手。

此致 AMR

1 个答案:

答案 0 :(得分: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:'结果对话框':

使用 init 方法中的额外参数创建第二个类,例如ResultDialog。 然后,您可以将新值传递给此额外参数。

所以,假设您已经设置了valX变量,那么您可以像这样传递它:

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

注意使用str()转换valX号以便在标签上显示。这可以在init方法中完成,但我把它放在这里作为提示。

HTH