1
在具有兩個模塊的應用程序中:GUI.py和calcs.py,其中GUI導入和使用calc的函數,calcs函數更新a的好方法是什麼GUI中的進度條?將模塊傳遞值函數調用到父模塊
當我將所有代碼放在一個模塊中時,它過去很簡單。我將它重構爲兩個(仍在學習...),這是我現在無法修復的唯一的東西。
例如作爲一個非常簡單的例子,具有GUI.py模塊:
import tkinter as tk
import tkinter.ttk as ttk
import calc as c
class GUI(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.prog = tk.DoubleVar()
self.result = tk.StringVar()
self.label = ttk.Label(textvariable = self.result)
self.progbar = ttk.Progressbar(self, maximum = 10, variable = self.prog)
self.button= ttk.Button(self, text = 'Go', command = lambda: self.result.set(c.stuff()))
self.label.pack()
self.progbar.pack()
self.button.pack()
a = GUI()
a.mainloop()
,並具有calc.py:
def stuff():
counter = 0
for i in range(1, 11, 1):
counter += 1
# find a way to pass the value of counter to the GUI progress bar
# do lots of stuff that takes quite some time
return 'hey, a result!'
什麼是進度計數器在計算功能與進步聯繫起來的好方法在GUI中的變量?
當他們在一個模塊中一起這當然是很簡單 - 可以只調用
prog.set(counter)
a.update_idletasks()
,但不再。谷歌搜索和閱讀有關我嘗試使它線程和使用隊列來鏈接它們,但這a)似乎是矯枉過正和b)很難...我沒有得到它的工作...
哦,我明白了。所以我可以將一個對gui.py類的引用傳遞給calc.py函數。這會讓事情變得簡單!我沒有意識到(假設這意味着要在calc.py中導入gui.py,並且需要在每個模塊嘗試導入另一個導入的循環中導入一組循環)。 – Tom