Python PyQt4 .setText 拒绝变量?
Python PyQt4 .setText refusing variables?
我会说我在 Python 方面相当不错,但是创建 GUI 对我来说是一个新概念。我使用 Qt Creator 来格式化 GUI 和 pyuic 来转换来自 file.ui.
的代码
我已经对大部分 GUI 进行了编码,但是我在更新行编辑、按钮等标签的文本时遇到了这个问题。所以这个 GUI 有一个从主程序打开的选项 window用户可以在其中指定某些参数。目前,我打开选项,设置值,关闭,重新打开选项 window,文本没有更改为变量的新值。然而,普通字符串确实有效。仅当程序重新启动时,变量才会'stick,'。
我正在导入一个 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(',')
[...]
我会说我在 Python 方面相当不错,但是创建 GUI 对我来说是一个新概念。我使用 Qt Creator 来格式化 GUI 和 pyuic 来转换来自 file.ui.
的代码我已经对大部分 GUI 进行了编码,但是我在更新行编辑、按钮等标签的文本时遇到了这个问题。所以这个 GUI 有一个从主程序打开的选项 window用户可以在其中指定某些参数。目前,我打开选项,设置值,关闭,重新打开选项 window,文本没有更改为变量的新值。然而,普通字符串确实有效。仅当程序重新启动时,变量才会'stick,'。
我正在导入一个 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(',')
[...]