2017-06-06 13 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