Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tkinter中函数与面向对象的结合_Python_Multithreading_Oop_Tkinter_Functional Programming - Fatal编程技术网

Python tkinter中函数与面向对象的结合

Python tkinter中函数与面向对象的结合,python,multithreading,oop,tkinter,functional-programming,Python,Multithreading,Oop,Tkinter,Functional Programming,我使用tkinter制作了一个应用程序,它基本上接受用户输入,单击相应的按钮,它将运行一个函数来处理它们并返回一个输出 该程序按预期工作,但我不清楚将功能和OOP风格的程序构建结合起来有多合适 我的应用程序由两个python文件组成。第一个文件称为GUI.py,如下所示: from secondfile import * class Window: def __init__(self, master): self.master = master ............

我使用tkinter制作了一个应用程序,它基本上接受用户输入,单击相应的按钮,它将运行一个函数来处理它们并返回一个输出

该程序按预期工作,但我不清楚将功能和OOP风格的程序构建结合起来有多合适

我的应用程序由两个python文件组成。第一个文件称为GUI.py,如下所示:

from secondfile import *
class Window:
    def __init__(self, master):
    self.master = master 
    .................
    
    def proceed():
        self.newWindow = tk.Toplevel(self.master)
        self.app = Window2(self.newWindow, self)

class Window2:
    ........ 
    thisThread = threading.Thread(
                      target =simple_func_but_expensive, 
                      args   = (....))

    def run_the_prog2():
        thr.start()


def main():
    root = tk.Tk()
    root.geometry(....)
    root.title(.....)
    app = Window(root)
    root.mainloop()

if __name__ == '__main__':
    main()   
第二个文件(secondfile.py)包括:

def supporting_function_1(....):
    .........
def supporting_function_2(....):
    .........
def supporting_function_...(....):
    .........
def supporting_function_20(....):
    .........
def simple_func_but_expensive(.......):
    .........
我想用类重新构造第二个文件,但是secondfile.py中的每个函数实际上并没有共享那么多实例变量。此外,由于root.mainloop()的原因,该程序能够运行simple_func_但_昂贵()的另一个实例,因此我认为函数文件中不需要OOP


然而,似乎大多数程序都使用OOP,我认为它更适合计算机科学。对此有何看法?

“我认为它更适合计算机科学”事实并非如此。你真的在谈论函数式编程吗?这并不意味着只有模块级的函数,而是使用纯函数来避免副作用和状态变化。注意,OOP和函数编程实际上并不是相互排斥的。尽管OOP语言通常是必需的,但scala是一种流行的基于类的OOP语言的示例,它从来都不是函数式编程语言。在任何情况下,您在这里所做的都是非常好的。并非所有内容都必须是类定义,这是Python,而不是Java。但从根本上说,这个问题过于基于观点……”“我认为它更适合计算机科学”,事实并非如此。你真的在谈论函数式编程吗?这并不意味着只有模块级的函数,而是使用纯函数来避免副作用和状态变化。注意,OOP和函数编程实际上并不是相互排斥的。尽管OOP语言通常是必需的,但scala是一种流行的基于类的OOP语言的示例,它从来都不是函数式编程语言。在任何情况下,您在这里所做的都是非常好的。并非所有内容都必须是类定义,这是Python,而不是Java。但从根本上说,这个问题过于基于观点。。。