wxpython:如何在导入的脚本中使用SetLabel更新面板文本



我有一个带有一些按钮的wxpython面板。其中一个按钮执行一个python脚本,该脚本控制实验室中的一台设备。在python脚本中有一个while循环,看起来像

ave_number = 5000
gpibObj.command('FAVN2,'+str(ave_number)) # Number of Averaging
gpibObj.command('STRT') #Start measurement bData
time.sleep(0.5) 
avg = 0
print "Number of averages to be taken:",ave_number
while avg < ave_number:
avg=int(gpibObj.query("NAVG?0"))
print('Averages done:'+str(avg))
sys.stdout.write("33[F")
time.sleep(0.3)

目前,这只是打印它告诉脚本暂停,直到平均数达到它应该达到的位置,并将当前平均数打印到命令行。我的问题是,有没有一种方法可以将面板代码中导入的脚本中的变量avg(一个处于while循环中的变量(传递给类似的命令

self.histstatusTEXT.SetLabel(temptxt(

这样我就可以在面板上看到它的实时更新。

为了清晰起见,按钮看起来像:

self.btn = wx.Button(self.panel,wx.ID_ANY,"Collect SR785 FFT Only",(5,45))
self.btn.Bind(wx.EVT_BUTTON,self.runScript,self.btn)

它正在执行的功能是

def runScript(self, e):
dlg = wx.TextEntryDialog(self.panel,'New Directory Name?',"path-save","",style=wx.OK)
dlg.ShowModal()
dir = dlg.GetValue()
dlg.Destroy()
os.system("mkdir {0}".format(dir))
dlg = wx.TextEntryDialog(self.panel,'Name of Files?',"path-save","",style=wx.OK)
dlg.ShowModal()
filename =dlg.GetValue()
dlg.Destroy()
x = dir + '/' + filename
self.sb.SetStatusText('Working')
temptxt = "Data saved to {0}".format(x)
self.histstatusTXT.SetLabel("Collecting SR785 Data")
wx.Yield()
fft_group_SINGLE_FFT_function.FFT1(x)
self.sb.SetStatusText('Ready')
self.histstatusTXT.SetLabel(temptxt)

函数fft_ group_SINGLE_fft_。如果问题没有意义,请道歉。如果它不让我知道,我可以尝试用不同的方式解释。

谢谢。

您可以尝试以下操作:

将标签本身(self.histstatusTXT(或指向(self.histstatusTXT.SetLabel(的函数指针作为附加参数(如果此函数在其他地方使用,则可能是可选的(传递给fft_group_SINGLE_FFT_function.FFT1()。这允许您在FFT1函数中设置标签文本。

我会传递函数指针,所以FFT1函数将无法更改hisistatusTXT标签的其他属性(除非需要(。

最新更新