【问题标题】:Tkinter buttons run another programTkinter 按钮运行另一个程序
【发布时间】:2017-05-23 04:10:15
【问题描述】:

我有四个不同的 python 程序,当用户按下一个单独的 python 文件上定义的 Tkinter 按钮时,我希望它们作为一个事件执行。到目前为止,这个 python 文件看起来像这样:

from tkinter import *
from tkinter import ttk

def arvuta():

    return 

VCalc = Tk()
VCalc.title("V-Calc")
VCalc.configure(background='#E6F3FE')

nupp = ttk.Button(VCalc, text="prog1", command=arvuta)
nupp.grid(column=1, row=1, padx=3, pady=3, sticky=(N, S, W, E))

nupp2 = ttk.Button(VCalc, text="prog2", command=arvuta)
nupp2.grid(column=2, row=1, padx=3, pady=3, sticky=(N, S, W, E))

nupp3 = ttk.Button(VCalc, text="prog3", command=arvuta)
nupp3.grid(column=1, row=3, padx=3, pady=3, sticky=(N, S, W, E))

nupp4 = ttk.Button(VCalc, text="prog4", command=arvuta)
nupp4.grid(column=2, row=3, padx=3, pady=3, sticky=(N, S, W, E))

VCalc.mainloop()

是否可以使用 Tkinter 按钮从另一个执行 python 程序?

【问题讨论】:

  • 如果你想执行另一个进程,最好使用subprocess模块。这似乎不太正确。它将使您有可能使用繁琐而缓慢的 IPC 技术在进程之间进行通信。也许一个好的方法可能是将您的其他代码用作此代码中的模块。因此,您将导入现有模块并直接从中调用函数。我不知道您的代码是否可以这样做。
  • 我找到了一个解决方案,这是操作系统。 " def arvuta(): os.system('myprogram.py')" 可以解决吗?
  • 如果它适合你,那没关系。 subprocess 比 os.system 功能更全,如果你经常做这种事情值得学习。

标签: python button tkinter


【解决方案1】:

您应该使用execfile python 内置函数。在按钮定义中,使用:command=lambda: execfile("path/to/file.py")。如果您想让主窗口保持响应,您可能需要使用多线程。

【讨论】:

  • 其实我尝试了不同的解决方案。最后我找到了“runpy”。导入 runpy 和 runpy.run_path("mycode.py")。效果不错
猜你喜欢
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
  • 2019-08-26
  • 2014-01-10
  • 2011-04-11
  • 1970-01-01
  • 2015-03-24
相关资源
最近更新 更多