微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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("\033[F")
      time.sleep(0.3)

当前,此打印仅告诉脚本暂停,直到平均数达到预期值为止,然后将当前的平均数打印到命令行。我的问题是,当前是否已设置面板的方式,以便将变量avg(在while循环中的变量)在面板代码中的导入脚本中传递给类似这样的命令

self.histstatusTXT.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?',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_function.FFT1(x)包含上面的while循环。道歉,如果问题没有道理。如果没有让我知道,我可以尝试解释另一种方式。

谢谢。

解决方法

您可以尝试以下操作:

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

我将传递函数指针,因此FFT1函数将无法更改hisistatusTXT标签的其他属性(除非您需要这样做)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。