2017-05-30 67 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! –