【问题标题】:tkinter: delete a button -- keep spacetkinter:删除一个按钮——保留空间
【发布时间】:2012-12-21 09:01:46
【问题描述】:

看看这个代码示例:

from tkinter import *
root = Tk()

def createbuttons ():
    texts = ["Do this", "Do that", "Hide"]
    global btns
    btns = []
    for btn in texts:
        b = Button(root, text= btn, width=20)
        b.pack(side=LEFT, padx=15)
        btns.append(b)
    btns[2].config(command=hide)

def hide ():
    btns[0].pack_configure(padx=(15,105))
    btns[1].destroy()
    btns[2].pack_configure(padx=(105,15))

createbuttons()
root.mainloop()

对我来说一切都很好,但这似乎是解决问题的新手。由于按钮宽度是像素和字符宽度的混合,我不知道需要添加多少像素,但在尝试了 10 次之后,它看起来不错,有 210 个像素 (105 + 105)。

我的问题是:有没有更好的方法来做到这一点?或者至少是一种知道按钮占用多少像素的方法?

提前致谢!

【问题讨论】:

    标签: button tkinter width


    【解决方案1】:

    一种选择是不删除您的按钮,而是在其上绘制一些东西。 hidebody 可以变成

    f = Frame(root)
    f.place(in_=btns[1], relwidth=1, relheight=1)
    

    这是另一个说明如何使用 lowerlift https://stackoverflow.com/a/5928294 的答案 另一种选择是绘制框架来代替你的按钮。


    在 Bryan Oakley 的评论后编辑,最初的建议是:
    f = Frame(root)
    geometry = btns[1].winfo_geometry()
    size,x,y = geometry.split("+")
    width, height = size.split("x")
    f.place(x=x, y=y, width=width, height=height)
    

    【讨论】:

    • 感谢您的快速回复!这正是我想要的。
    • 你可以使用relwidth=1.0relheight=1.0来代替计算宽度和高度。
    猜你喜欢
    • 1970-01-01
    • 2020-07-06
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多