【问题标题】:How to hide tkinter root window and show my image?如何隐藏 tkinter 根窗口并显示我的图像?
【发布时间】:2021-04-13 02:56:25
【问题描述】:

我有这段代码,我单击按钮,tkinter 窗口显示图像以及 tk 根窗口。 我尝试使用 root.withdraw() 但这只是最终创建了 tkinter 根窗口并且不显示我的图像。在仅显示图像和隐藏 tkinter 根窗口方面需要帮助

def on_click_button():
    global stage
    stage == 'Menu'
    root = tk.Toplevel()
    photoImageObj = tk.PhotoImage(file="showimg.png")             
    lab = tk.Label(root, image=photoImageObj).pack()
    root.withdraw()
    root.mainloop()
    print('You clicked samsung note 20')

【问题讨论】:

  • 您正在创建 两个 窗口:一个 Toplevel 和一个隐式根(假设您在此函数之前没有创建根窗口)。你知道吗?
  • 我尝试在运行按钮之前创建一个toplevel root 'root = tk.Toplevel()',但同样的问题仍然存在。我还需要Toplevel root 来运行 tkinter 窗口。我对 tkinter 很陌生,所以不太确定我正在创建的隐式根是什么,如果可能的话,我想删除额外的窗口,感谢您的帮助!
  • 如果您还没有创建Tk 的实例,那么创建Toplevel 将隐式为您创建一个,从而产生两个窗口。由于您没有提供完整的minimal reproducible example,因此我们无法知道您在调用此函数之前是否已经创建了Tk 的实例。那么,您的代码是否在某处执行something = Tk()
  • 啊,我有一个功能# creates a window def create_window(): window = tk.Toplevel(root),我还有root = tk.Tk() 用于其他按钮,但是我认为这与三星note 20 按钮不冲突。如果我错了,请纠正我。感谢您的帮助!
  • 在其他可点击按钮下编辑我也有root = tk.Tk() w = tk.Label(root, text=('hello')) w.pack() w.config(width=0, height=0) w.config(font=("Courier", 30)) root.mainloop(),但不确定这些是否会导致问题,因为我目前正在尝试创建一个按钮点击事件,该事件打开带有我需要的图像的 tkinter 窗口显示

标签: python tkinter


【解决方案1】:

Tkinter 将小部件的master 属性设置为对该小部件的主控的引用。由于您没有为Toplevel 的实例显式设置主窗口,因此master 将是根窗口。因此,在这种特定情况下您可以在 root.master 上致电 withdraw

root.master.withdraw()

就个人而言,我建议不要将您的Toplevel 命名为“root”,因为它不是真正的根窗口。它使代码更难理解,因为真正的根窗口不会有主窗口。

您需要提供一种机制来在某些时候显示根窗口,因为撤回它会使其保持活动状态但不可见。

【讨论】:

  • 啊,非常感谢! root.master.withdraw() 有助于隐藏 tkinter 根目录,但这导致我无法将窗口关闭回前一个窗口中的菜单。猜猜现在我最好的解决方案是保持 tkinter 根关闭窗口。
  • @Codenoob:如果你不使用根窗口做其他事情,为什么不把你的图片放进去呢?
  • 不太清楚如何将图像输入到根窗口中......这是一个非常聪明的建议!我让 root = tk.Label(root, image=photoImageObj).pack() 吗?
  • @Codenoob:将其添加到根窗口与将其添加到 Toplevel 完全相同。
猜你喜欢
  • 1970-01-01
  • 2018-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
相关资源
最近更新 更多