2015-12-04 33 views
1

我一直在編寫這個python腳本,它基本上通過你設置的reddit鏈接和特定變量來設置你的windows壁紙背景,比如hot/top all time/etc 。我正在用PySide爲它寫一個GUI,目前我有3個文件。Python和PySide:從另一個文件調用函數時重置變量值

  • 通過QtDesigner產生的UI文件output_ui.py

  • 與所產生的UI文件output.py

  • 而且運行一切並設置壁紙的腳本進行交互的另一個文件WallDit.py

當我運行output.py文件時,將GUI中的值全部設置爲w orks正確,值設置正確,但是當我單擊開始按鈕並執行腳本(WallDit.py)並從output.py調用函數時,變量值將重置爲默認值(即,默認值)。我設置爲「壁紙」,它會回到默認的「壁紙+壁紙」)。

例如,當我打電話從第一檔這個功能,版(Subreddit)行文本價值被重新設置爲默認,不,這是在GUI上實際顯示的一個:

def handle_subreddit_line(self): 
    print("subreddit line in output.py: " + self.subreddit_line.text()) 
    return self.subreddit_line.text() 

調用函數的代碼:

def get_subreddit_name(): 
    test = MainWindow() 
    print("test: " + test.handle_subreddit_line()) 
    subreddit = MainWindow().handle_subreddit_line() 
    return subreddit 

注:當我改變價值觀,說subreddit_name線的信號被髮送和正確的價值輸出,當函數從第一個文件名爲問題開始。

更新:如果我在任何地方調用該函數,該值仍然被重置爲默認

def handle_start_btn(self): 
    if self.start_btn.isDown: 
     print("Button pressed") 
    print("inside function: " + MainWindow().handle_subreddit_line()) 
    import WallDit 

回答

1

WallDit.py,你初始化五個新的窗口。這意味着你有五個新的文本框。爲了解決您的問題,您需要使用一個實例,即您在output.py中創建的實例。例如,你可以在WallDit.py刪除main(),使set_wallpaper等功能採取window參數,做這樣的事情:

def handle_start_btn(self): 
    WallDit.set_wallpaper(self) 

(移動import行添加到文件的頂部,因爲WallDit不會執行進口任何東西,現在,它是很好的做法,以保持全部進口有)

編輯:當然,你需要通過window周圍,並用它來代替MainWindow()

相關問題