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

1つのオプションは、ボタンを削除せずに、その上に何かを描画することです。hide体がなる可能性があります

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

使用方法を説明する別の回答がlowerありlift ます。https://stackoverflow.com/a/5928294 別の方法は、ボタンの代わりにフレームを描画することです。


ブライアンオークリーのコメントの後に編集された、元の提案は次のとおりでした:

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 に答える