Python 如何从PyQt GUI打开Tkinter应用程序

Python 如何从PyQt GUI打开Tkinter应用程序,python,tkinter,pyqt,Python,Tkinter,Pyqt,我已经用PySide2(PyQt)构建了一个应用程序。现在我被要求制作一个QPushButton,它只是启动一个独立的Tkinter应用程序,其他人已经编写了这个程序。 我想我可以简单地将下面的方法连接到启动Tkinter应用程序的QPushButton(Modell_final.App就是这个应用程序): 但当我在GUI中按下按钮时,第一次什么也没发生,第二次Tkinter应用程序打开并立即冻结。 感谢您的帮助:)我不确定Tkinter应用程序的独立性。如果它真的只是你想要运行的某个小窗口,最

我已经用PySide2(PyQt)构建了一个应用程序。现在我被要求制作一个QPushButton,它只是启动一个独立的Tkinter应用程序,其他人已经编写了这个程序。 我想我可以简单地将下面的方法连接到启动Tkinter应用程序的QPushButton(Modell_final.App就是这个应用程序):

但当我在GUI中按下按钮时,第一次什么也没发生,第二次Tkinter应用程序打开并立即冻结。
感谢您的帮助:)

我不确定Tkinter应用程序的独立性。如果它真的只是你想要运行的某个小窗口,最终又被关闭了,我会为它选择一个自己的进程

你可以这样试试。请将其保存为“test\u test.py”

如果它是真正完全独立的,那么您甚至不需要将Modell_final导入PyQt应用程序。只需导入子流程,让按钮调用
subprocesss.popen
(而不是
subprocesss.call
,然后再次冻结)python文件,其中包含tkinter应用程序

缺点是

  • 与Tkinter应用程序共享数据是困难的,但如果它是独立的,这里没有问题
  • 如果多次按下该按钮,Tkinter应用程序的多个窗口将打开。这可能是你想要的,但如果不是,你必须处理好这件事 PyQt有一个自己的“mainloop”(不知道名称)。所以如果你想在它旁边运行一个tkinter,我认为最好在另一个线程中运行。
    def open_tkinter():
     root = tkinter.Tk()
     app = Modell_final.App(root)
     root.mainloop()
    
    import tkinter as tk
    import subprocess
    
    window = tk.Tk()
    window.title("Window Title")
    window.geometry('200x100')
    
    lbl = tk.Label(window, text="Hello World")
    lbl.pack()
    
    def clicked(): #function before bind
        subprocess.Popen(['python' , 'test_test.py'])
    
    btn = tk.Button(window, text="Click Me", command=clicked)
    btn.pack()
    
    window.mainloop()