我用PySide2 (PyQt)建立了一个应用程序。现在我被要求制作一个QPushButton,它可以简单地启动一个独立的Tkinter应用程序,而这个应用程序是由别人编程的.我想我可以简单地将下面的方法连接到我的QPushButton,它可以启动Tkinter应用程序(Modell_final.App是应用程序)。
def open_tkinter():
root = tkinter.Tk()
app = Modell_final.App(root)
root.mainloop()
但当我在GUI中按下Button时,第一次什么都没有发生,第二次Tkinter App就立即打开并冻结。)
我不知道Tkinter应用的独立性如何。如果真的只是一些其他你想运行的小窗口,最终又会被关闭,我会选择为它建立一个自己的进程。
你可以这样尝试。请将其保存为 "test_test.py"
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()
如果它真的是完全独立的,这样做的好处是你甚至不需要将Modell_final导入到PyQt应用程序中。只需导入subprocess,让按钮调用Modell_final。subprocesss.popen
(不是subprocesss.call
,然后又冻结了)python文件,里面有tkinter应用。
缺点是