0

我会说我在 Python 方面相当不错,但创建 GUI 对我来说是一个新概念。我使用 Qt Creator 格式化 GUI 并使用 pyuic 转换 file.ui 中的代码。

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

我正在导入一个 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))

缩短了上面的代码。*

4

1 回答 1

0

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

def retranslateUi(self, OptionsWindow):
    [...]
    reload(config)
    confs = config.configAttrs.split(',')
    [...]
于 2017-05-30T08:13:31.540 回答