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(',')
    [...]