1

Y軸上で自動的にサイズ変更したいtkinterフレームがありますが、ラベルウィジェットを追加するときに一定の幅を維持します。

私が使用しているXサイズを一定に保つために、grid_propogate(False)それは全体を一定のサイズに保ちます。

この方法でフレームのサイズを変更するにはどうすればよいですか?

ありがとう

4

2 に答える 2

2

わかりました、わかりました

pack(fill=Xフレームを最大限に活用して使用した場合にフレームが埋められるスペースを含む大きなフレームpack_propagate(False)を作成し、内側のフレームを変更せずに外側のフレームのX寸法に一致させるようにしました。次に、Xサイズを維持しながら、必要に応じて内部フレームに線を追加できます。

OuterFrame = Frame(root, height=500, width=400)
InnerFrame = Frame(OuterFrame, borderwidth=3, relief=RAISED)
InnerFrame.pack(side=TOP, fill=X)

# stuff that goes in the y-resizing InnerFrame

OuterFrame.pack_propogate(False)
OuterFrame.pack()
于 2012-07-12T20:37:50.497 に答える
0

これは私には非常に醜い解決策のように思えます(うまくいけば、誰かがより良いものを持って来るでしょう):

import Tkinter as tk
root=tk.Tk()
f=tk.Frame(root,width=100,height=300)
f.grid_propagate(False)
f.grid(row=0,column=0)
def resize(evt):
    f.update_idletasks()
    height=f.winfo_reqheight()
    f.grid_propagate(False)
    if(evt.width!=100) or (evt.height!=height):
        f.configure(width=100,height=height)
    print "HERE", evt.width,height

f.bind('<Configure>',resize)

#Just some stupid (ugly) code to update the size of the widget at runtime.
def add_label():
    f.grid_propagate(True)
    lbl=tk.Label(f,text='   %d                   Hello!'%(add_label.row))
    lbl.grid(column=0,row=add_label.row)
    add_label.row+=1

add_label.row=0

b=tk.Button(root,text="Add label",command=add_label)
b.grid(row=1,column=0)
root.mainloop()
于 2012-07-12T20:12:50.417 に答える