Python PyQt4 .setText拒绝变量?
问题描述:
我会说我对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))
缩短上述代码的文本。*
答
问题是因为尽管config.py文件被修改了,但这并不是python自动重载的,为了强制它,你必须使用reload
,在你的情况下:
def retranslateUi(self, OptionsWindow):
[...]
reload(config)
confs = config.configAttrs.split(',')
[...]
+0
这很有道理。对配置文件进行了更改,但只在main.py文件的最顶部导入一次。所以这些更改只会在完全重新启动后出现。现在我因为忽视诸如简单的任务而感到愚蠢。 :)我真的需要第二双眼睛,因为我不习惯使用图形用户界面这么混乱。谢谢Eyllanesc! –
当你说它不起作用时,你的意思是,当你再次运行你的应用程序时,它并没有显示你在关闭它之前看到了什么? – eyllanesc
我是新来的*,这里有一个回复按钮? :D我已经向OP添加了画廊来表达问题。 –
我还是不明白你,你可以更好地解释它。 – eyllanesc