python - 使用 tkinter,如果使用 place() 方法,有没有办法隐藏许多小部件?
问题描述
我对我的菜单代码的一个特定部分有困难。我使用 place() 方法在主屏幕上更具体地放置按钮和小部件。
有没有办法隐藏所有的主菜单按钮和标签小部件?grid() 方法似乎有一种非常直观的方法来使用 grid_forget() 或 pack_forget() 隐藏大量小部件。当涉及隐藏的不仅仅是特定标签时,place_forget() 是否有任何可变性?
代码示例:
### Menu navigation to Training page
def createTrainingPage(event):
event.widget.place_forget()
#######################
### Widget Creation ###
#######################
### Buttons
TrainingButton = Button(text="Training", foreground="blue", font="bold")
TrainingButton.place(relx=0.07, rely=0.31, anchor=W)
TrainingButton.bind('<Button-1>', createTrainingPage)
### I want the createTrainingPage() method to 'erase'
### the menu and create the next page. But it only erases the one
### widget the bind() function is attached to. Thoughts?
QuizzesButton = Button(text="Quizzes", foreground="blue", font="bold")
QuizzesButton.place(relx=0.07, rely=0.51, anchor=W)
TrainerButton = Button(text="Management", foreground="blue", font="bold")
TrainerButton.place(relx=0.038, rely=0.71, anchor=W)
### Labels
# Bell Bank img logo
LogoLabel = ttk.Label(image=renderedLogo)
LogoLabel.place(relx=0.025, rely=.1, anchor=W)
TrainingLabel = ttk.Label(prog, text="Training To-Do, Scheduling, etc.", foreground="blue", background="lightgray")
TrainingLabel.place(relx=0.3, rely=0.31, anchor=W)
QuizzesLabel = ttk.Label(prog, text="Quiz Scores, Performance, etc.", foreground="blue", background="lightgray")
QuizzesLabel.place(relx=0.3, rely=0.51, anchor=W)
TrainerLabel = ttk.Label(prog, text="Trainer Admin: Course, Roster and Training Mgmt", foreground="blue", background="lightgray")
TrainerLabel.place(relx=0.3, rely=0.71, anchor=W)
解决方案
该方法的工作原理与和方法place_forget()
几乎相同——它们都对一个小部件进行操作,并且基本上“隐藏”了该小部件。使用哪个几何管理器的选择取决于用于显示小部件的几何管理器。forget_pack()
forget_grid()
因此,要隐藏一些菜单按钮(或任何一组按钮),您可以执行以下操作:
menu_buttons = [...] # (bunch of ttk or tkinter Buttons)
for button in menu_buttons:
button.place_forget()
推荐阅读
- linux - 从虚拟 Linux 网络设备驱动程序发送的 RX 数据包被丢弃
- postgresql - OpenShift集群中的PostgreSQL服务能否通过暴露路由接收外部流量
- android - 通过 wowza(直播)将谷歌眼镜连接到安卓应用
- sonarqube - SonarCube 能否将指定规则应用于特定代码?
- typescript - 动态组件在 vue 的打字稿中不起作用
- android - 确定 AppBarLayout 之前的状态
- r - 使用数据表中的正则表达式 grep 名称
- javascript - 有没有办法在 JavaScript 中获取对象内存地址和对象哈希
- html - 页面上的 CSS 中心文本转换为 PDF
- linux - 使用 fping 提取平均时间