我有这个简单的对话框:
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
答案 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