【问题标题】:How do I navigate from one python gui program to another?如何从一个 python gui 程序导航到另一个?
【发布时间】:2015-02-25 08:47:50
【问题描述】:

这是使用 Python Tkinter 的主菜单摘录

master = Tk()

lbl = Label(master, text = "Main Menu:")
lbl.grid(row=0,column=1)


def list():
    import list

listb = Button(master, text = "Patient List", command=list, width=10)
listb.grid(row=1, column=1)

有一个“Patient List”按钮,按下时会打开一个从不同 python 文件指定的窗口。

我的问题是主菜单窗口存在一个窗口将折叠的错误。新窗口正常显示,但关闭后,我无法使用主菜单。

另外,在我的其他按钮上。主菜单没有折叠,但假设我有一个按钮 Add Patient,点击它后,Add Patient 窗口就会出现。它是功能性的。然后我关闭它,要么使用我在其中编程的退出按钮,要么使用关闭按钮。主菜单不会再次打开添加患者窗口。

那么我怎样才能顺利地从一个 python 程序导航到另一个程序呢?没有主菜单折叠。虽然能够一遍又一遍地打开一个窗口。

我的 Patient List 程序中有很多定制的 gui 编程。我认为这是因为我在主菜单中使用了一个网格,而不是我的 Patient List 中的一个网格。但它不应该影响主菜单,因为它们应该是单独的程序。

【问题讨论】:

  • 调用你自己的模块函数list不是一个好主意,也许从改变它开始?
  • 同样的事情。说我重命名它看起来像这样 "def plist(): import patlist" 是一样的。
  • 是的,但是您的问题的读者不必花时间想知道您为什么这样命名它们!请阅读stackoverflow.com/help/mcve。您可能还会发现 stackoverflow.com/q/26213549/3001761 很有用。

标签: python user-interface tkinter


【解决方案1】:

在使用 TKinter 进行此类程序时,我通常使用 Screen 类。

对于您的示例,例如: “MainScreen”、“AddPatienScreen”、...

都是 Frame tkinter 类的子类。 我的 Tk 应用程序只显示一个屏幕,并提供销毁和替换另一个屏幕的功能。

我现在无法访问任何代码,但如果您理解它,我邀请您自己尝试这种方法。它导致代码分离良好并取得了良好的效果。

如果需要,我可以为您提供一个非常简短的示例。

【讨论】:

  • 显然,这种模式允许您通过保留之前显示的屏幕对象的固定大小列表来添加一些功能,例如“后退/前进”屏幕导航。可能有用。
猜你喜欢
  • 2020-05-21
  • 1970-01-01
  • 2023-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-19
  • 2010-11-09
相关资源
最近更新 更多