[英]Python - TKinter - Destroying widgets not lowering frame height
我遇到了一个问题,问题是我在游戏中的哪个位置显示了游戏的当前进度(我们将此框架称为“结果”)。
如果玩家选择开始一个新游戏,则结果中的所有小部件都将被销毁,并且框架将被隐藏起来,直到再次使用为止。
现在我遇到的问题是; 当结果被回调时,它位于其他两个帧之间。 但是,在包含小部件被销毁之前,它包含所有小部件时的大小仍保持以前游戏的大小。 窗口小部件未显示在框架中,但仍与窗口小部件当时的大小相同。
一旦在结果中放置了新的小部件,便会校正大小,但我不知道如何使height = 0
。 我已经尝试了results.config(height=0)
但是没有用。
有谁知道如何将帧的大小“重置”为0?
抱歉,众所周知的“文本墙”,但我找不到一种以紧凑的方式提供代码的方法。
谢谢
如果我完全了解您想要什么,那么此插图是正确的:
蓝色是结果框
结果已删除,其他所有内容都调整了大小:
与此对应的代码如下所示:
import tkinter
RESULTS_WIDTH = 128
root = tkinter.Tk()
left_frame = tkinter.Frame(root, height=64, bg='#cc3399')
right_frame = tkinter.Frame(root, height=64, bg='#99cc33')
def rem_results(event):
# Remove widget
results.destroy()
# Resize other widthets
left_frame.config(width=128 + RESULTS_WIDTH/2)
right_frame.config(width=128 + RESULTS_WIDTH/2)
# Reposition other widgets
left_frame.grid(row=0, column=0)
right_frame.grid(row=0, column=1)
def add_results(event):
# Create results widget
global results
results = tkinter.Frame(root, width=RESULTS_WIDTH, height=64, bg='#3399cc')
results.grid(row=0, column=1)
# Resize other widgets
left_frame.config(width=128)
right_frame.config(width=128)
# Reposition other widgets
left_frame.grid(row=0, column=0)
right_frame.grid(row=0, column=2)
# Initialize results
add_results(None)
# Bind actions to <- and -> buttons
root.bind( '<Left>', rem_results )
root.bind( '<Right>', add_results )
#$ Enter eventloop
root.mainloop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.