我正在拥有并发布我在游戏中有框架的地方,显示游戏的当前进度(让我们称之为框架;“结果”)。
如果玩家选择开始一个新游戏,结果中的所有小部件都会被破坏,并且忘记将框架隐藏起来直到再次使用它。
现在我遇到的问题是;当结果被回调时,它位于两个其他帧之间。但是,在小部件被销毁之前,它已经包含了所有小部件,它仍然保持了之前游戏的大小。小部件没有显示在框架中,但它仍然是小部件在那里时的大小。
只要在结果中放置新的窗口小部件,大小就会得到纠正,但我无法弄清楚如何制作height = 0
。我尝试了results.config(height=0)
但是没有用。
有谁知道如何将帧的大小“重置”为0?
对于众所周知的“文本墙”感到抱歉,但我找不到以紧凑的方式提供代码的方法。
由于
答案 0 :(得分:2)
如果我完全理解你想要的东西,那么这个插图是正确的:
蓝色是结果框架
结果已删除,其他所有内容都已调整大小:
相应的代码如下:
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()