python - 如何更改 tkinter 中按钮的可见性?
问题描述
我是 python 新手,我正在尝试创建一个应用程序,我希望只有在单击“显示”按钮后才能看到按钮。该按钮从应用程序开始时不应该是可见的,它应该只有在单击“显示”按钮后才可见。
我有这个代码,它在单击另一个按钮后隐藏了该按钮。隐藏按钮后,它将其文本更改为“显示”。
from tkinter import *
root = Tk()
btn1 = Button(root,text="Example")
btn1.visible = True
btn1.place(x=20, y=50)
btn1.pi = btn1.place_info()
btn3 = Button(root, text="click me", command=lambda:plugin())
btn3.place(x=20, y=150)
def plugin():
master = Tk()
def toggle1():
if btn1.visible:
btnToggle1["text"] = "Show Example"
print ("Now you don't")
btn1.place_forget()
else:
btn1.place(btn1.pi)
print ("Now you see it")
btnToggle1["text"] = "Hide Example"
btn1.visible = not btn1.visible
btnToggle1 = Button(master, text="Hide Example", command=toggle1)
btnToggle1.place(x=70, y=150)
master.mainloop()
root.mainloop()
我希望该按钮仅在单击“显示”按钮后才显示,而不是从一开始就显示。
解决方案
冒着明显的风险,如果您不希望按钮在启动时可见,请不要在启动时显示按钮。
您在程序开始附近使用这行代码明确地使按钮可见:
btn1.place(x=20, y=50)
然后你btn1.pi
通过调用来设置place_info
,但你不需要这样做。您可以直接设置btn1.p
而无需先调用.place
后跟place_info
.
btn1 = Button(root,text="Example")
btn1.visible = False
btn1.pi = {"x": 20, "y": 50}
请注意,我也更改btn1.visible
为 False。您实际上不需要单独的属性来跟踪它是否可见,tkinter 可以使用 method 回答该问题winfo_viewable()
。
或者,您可以在计算后简单地删除按钮btn1.pi
:
btn1.place(x=20, y=50)
btn1.visible = False
btn1.pi = btn1.place_info()
btn1.place_forget()
推荐阅读
- mysql - 我想从表 ST 中获取最新条目,但无法找到正确的查询来获得预期的输出
- mysql - MariaDB 服务处于活动状态但出现错误,不适用于起搏器
- gtk - 当 Gtk.ComboBox 中的活动项更改时更新 Gtk.Label
- reactjs - 在 React 中保存元素的状态
- python - Pycharm apache spark mongodb connect : java.lang.NoClassDefFoundError: scala/Product$class
- python - 使用数据框列错误绘制 axvline:ValueError:DataFrame 的真值不明确。
- web-services - SSLError:dh 密钥太小
- java - 我正在制作一个 Hibernate 项目,其中我的数据库有很多多对多关系,并且在映射中出现错误。错误和涉及的类:
- c# - 在返回 Task 的 WebService 方法中返回错误信息
- asp.net-web-api - Web API 和返回结果