2017-06-06 47 views
1

我有一個關於如何格式化tkinter程序的問題,該程序必須處理多個標籤,這些標籤異步地運行與不同輸入相同的任務?在TKinter中格式化異步選項卡?

現在,我有一個類包含整個應用程序。有更好的方式來格式化我的應用程序嗎?

我想將每個標籤成類,這將在應用程序類的,但我不知道,如果是這樣做的,像這樣的最佳方式:

class Application(): 
    def __init__(self): 
    #code 

    class tab1(): 
     def __init__(self): 
      #code 

    class tab2(): 
     def __init__(self): 
      #code 

我新的GUI編程,所以我applogize如果這個問題太廣泛。

+2

你給的錢肯定不夠詳細信息一個明確的答案 - 而且也不太可能是反正一個正確的答案,這在很大程度上是個人風格問題。在任何情況下,都不需要將您的選項卡類放入應用程序類中;這在Python中幾乎沒有意義。如果所有選項卡在功能上都相同,則不需要每個選項卡都有單獨的類,只需創建一個類的多個實例即可。 – jasonharper

+0

我已經更新了我的答案,包括一些鏈接到多處理文檔和一個stackoverflow問題,接縫有相同類型的問題你做。 –

回答

2

從我能看到你有2個問題有關這個問題。

一個是有3個單獨的標籤/小部件的問題。

這很容易完成。您可以使用1個函數和幾個變量來完成此操作,這些變量將在您的3個過程之間進行更改,然後使用這些不同的變量調用函數3次。

def doStuff(var1, var2, var3): 
    sumvars = var1 - var2 * var3 
    return sumvars 

print(doStuff(1,2,3), doStuff(3,2,1), doStuff(2,3,1)) 

結果:

-5 1 -1 

正如你可以看到這是3種不同的方法從同一個定義函數跑

你可以用一個類實現這一點。你只需要一個以問題中的變量作爲參數的類。你可以用不同的變量來調用你需要處理的不同變量。

class DoStuff(object): 
    def __init__(self, var1, var2, var3): 
     self.var1 = var1 
     self.var2 = var2 
     self.var3 = var3 

    def someMath(self): 
     sumvars = self.var1 - self.var2 * self.var3 
     return sumvars 

object1 = DoStuff(1,2,3) 
object2 = DoStuff(3,2,1) 
object3 = DoStuff(2,3,1) 

print(object1.someMath(), object2.someMath(), object3.someMath()) 

結果:

-5 1 -1 

更新:

從我的研究,你可能想看看多進程庫。

如果你看看this post有一個用戶有一個類似的問題,他們發現使用多處理庫,每個進程確實有它自己的進程ID,並從我讀的並行運行。

下面是對文件中的鏈接multiprocessing

+1

夢幻般的答案,謝謝。 – GreenSaber

+0

不客氣。如果您花時間閱讀我鏈接的帖子,他們會討論關於同步處理選項。如果我已經回答了你的問題,考慮選擇這個作爲你的答案:) –

+0

現在閱讀它,我需要一次運行至少4個異步標籤...也許python不是正確的語言。 – GreenSaber