2017-05-30 105 views
0

我会说我对Python很体面,但对我来说创建GUI是一个新概念。我已经使用Qt Creator来格式化GUI和pyuic来转换file.ui中的代码。Python PyQt4 .setText拒绝变量?

我有大部分的GUI编码,但我遇到了这个问题,更新标签的文本行编辑,按钮等。所以这个GUI有一个选项窗口,从用户可以指定的主程序打开某些参数。目前,我打开选项,设置值,关闭,重新打开选项窗口,文本没有改变为新的变量值。然而,简单的字符串可以工作只有程序重新启动,变量才会“粘住”。

我正在导入一个config.py文件,其中有一个包含参数字符串的变量。这些被格式化并与所有其他标签一起设置等,但没有因某种原因而被设置。

config.py

configAttrs="clientid,oauth,123,source,123" 

mainProgram.py的嵌套函数用于设置标签等

def retranslateUi(self, OptionsWindow): 
    OptionsWindow.setWindowTitle(_translate("OptionsWindow", "OptionsWindow", None)) 
    self.label_MainOptions.setText(_translate("OptionsWindow", "Options", None)) 


    confs = config.configAttrs.split(',') 
    clientid = str(confs[0]) 
    oauth = str(confs[1]) 
    cache = str(confs[2]) 
    heightAdjust = str(confs[4]) 

    #does NOT work when reopening options window 
    #does work with restart 
    self.lineEdit_ClientID.setText(_translate("OptionsWindow", clientid, None)) 

    #does NOT work when reopening options window 
    #does work with restart 
    self.lineEdit_ClientID.setText('{0}'.format(clientid)) 

    #does work when reopening options window 
    #does work with restart 
    self.lineEdit_ClientID.setText(_translate("OptionsWindow", 'string_clientid', None)) 

缩短上述代码的文本。*

+0

当你说它不起作用时,你的意思是,当你再次运行你的应用程序时,它并没有显示你在关闭它之前看到了什么? – eyllanesc

+0

我是新来的stackoverflow,这里有一个回复按钮? :D我已经向OP添加了画廊来表达问题。 –

+0

我还是不明白你,你可以更好地解释它。 – eyllanesc

回答

0

问题是因为尽管config.py文件被修改了,但这并不是python自动重载的,为了强制它,你必须使用reload,在你的情况下:

def retranslateUi(self, OptionsWindow): 
    [...] 
    reload(config) 
    confs = config.configAttrs.split(',') 
    [...] 
+0

这很有道理。对配置文件进行了更改,但只在main.py文件的最顶部导入一次。所以这些更改只会在完全重新启动后出现。现在我因为忽视诸如简单的任务而感到愚蠢。 :)我真的需要第二双眼睛,因为我不习惯使用图形用户界面这么混乱。谢谢Eyllanesc! –