腳本_a.py
from tkinter import *
from script_b import test
root = Tk()
var1 = stuff
var2 = stuff
def start_scriptb():
test([var1, var2])
Button(root, text="Start",
command=start_scriptb)
root.mainloop()
腳本_b.py
from tkinter import *
def test(x):
main = Tk()
Label(main, text=x)
Button(main, text="Exit", command=main.destroy())
main.mainloop()
這是我想要實作的一個非常基本的版本。實際上,我正在生成一個進度視窗,該視窗在腳本 2 中使用 subprocess.Popen 以及腳本 1 中的傳遞變數,并通過第二個程式上的滾動文本小部件查看進度。每次從 script_a 中點擊該按鈕時,我都試圖生成一個獨立于根 GUI 的新行程。
到目前為止,它在我的測驗中運行良好,但我想看看這是否會導致任何問題,或者這是否實際上產生了兩個行程?
Tk()我知道每個行程應該只有一個。
使用TopLevel()視窗顯示進度與執行緒模塊一起作業正常,但TopLevel()如果 root 正在執行任何需要任何時間長度的處理,則視窗將與 root(以及任何其他打開的 TopLevels())一樣凍結。
uj5u.com熱心網友回復:
經過數小時的測驗,我確實成功地運行了兩個 Tk() 回圈,但它可能會出現問題,正如“Bryan Oakley”在許多執行緒中發布的那樣。
最終,我決定當我需要單獨運行某些東西時,我會使用引數啟動我的 GUI,并在一個全新的行程中處理它,而不是直接傳遞任何引數。似乎是一個更安全的選擇。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/461128.html
