繁体   English   中英

Python-TKinter-销毁小部件不会降低框架高度

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM