0

看看这个代码示例:

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)。

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

提前致谢!

4

1 回答 1

0

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

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)
于 2013-01-07T19:09:03.047 回答