【问题标题】:Python Tkinter switch between two buttonsPython Tkinter 在两个按钮之间切换
【发布时间】:2018-09-24 22:51:47
【问题描述】:

我正在尝试使用 tkinter 在两个按钮之间切换。

我有两个触发功能的按钮。使用 changeOne 只想显示 ModusAButton 并删除 ModusBButton。而changeTwo 则相反。

我收到此错误消息:_tkinter.TclError: bad window path name ".!button2"

这样做的正确方法是什么?

ModusAButton = Button(root, text="ModusA")
ModusBButton = Button(root, text="ModusB")

def changeOne():
    ModusAButton.grid(row=1,column=0,sticky=W, padx=10,pady=10)
    ModusBButton.destroy()

def changeTwo():
    ModusBButton.grid(row=1,column=1,sticky=W, padx=10,pady=10)
    ModusAButton.destroy()

ChangeOneButton = Button(root, text="ChangeOne",command=changeOne)
ChangeOneButton.grid(row=0,column=0,sticky=W, padx=10,pady=10)

ChangeTwoButton = Button(root, text="ChangeTwo",command=changeTwo)
ChangeTwoButton.grid(row=0,column=1,sticky=W, padx=10,pady=10)

【问题讨论】:

  • 您面临什么问题?
  • 我收到此错误消息:_tkinter.TclError: bad window path name ".!button2"
  • 你把from tkinter import *放在开头了吗?
  • 将您的错误信息添加到问题中
  • 是的。同样,第一次单击其中一个更改按钮也可以正常工作。但是下一次单击其中一个更改按钮会导致错误消息。

标签: python python-3.x user-interface button tkinter


【解决方案1】:

.destroy() 完全摆脱了按钮。要仅暂时删除它,请使用grid_forget()

def changeOne():
    ModusAButton.grid(row=1,column=0,sticky=W, padx=10,pady=10)
    ModusBButton.grid_forget()

def changeTwo():
    ModusBButton.grid(row=1,column=1,sticky=W, padx=10,pady=10)
    ModusAButton.grid_forget()

【讨论】:

  • 完美!这正是我正在寻找的!非常感谢!
  • @K-Doe 如果答案解决了您的问题,您可以点击其上的绿色勾号。这意味着将来遇到您问题的人可以更轻松地看到答案,并奖励您 2rep 和回答者 15rep。
  • 我会的,但我还要再等2分钟!谢谢,祝你有美好的一天。
猜你喜欢
  • 1970-01-01
  • 2019-02-27
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 2018-08-25
  • 2011-11-24
  • 2016-06-07
相关资源
最近更新 更多