6

私はtkinterでアプリを書いていて、フレームにいくつかのラベルを入れようとしています...残念ながら、

windowTitle=Label(... width=100)

windowFrame=Frame(... width=100)

幅が全然違う…

これまでのところ、次のコードを使用しています。

windowFrame=Frame(root,borderwidth=3,relief=SOLID,width=xres/2,height=yres/2)
windowFrame.place(x=xres/2-160,y=yres/2-80)
windowTitle=Label(windowFrame,background="#ffa0a0",text=title)
windowTitle.place(x=0,y=0)
windowContent=Label(windowFrame,text=content,justify="left")
windowContent.place(x=8,y=32)

...

#xres is screen width
#yres is screen height

何らかの理由で、ラベルの幅を設定しても幅が正しく設定されないか、測定単位としてピクセルが使用されません...windowTitleフレームの長さに適応するようにウィジェットを配置する方法はありますか、またはラベルの幅をピクセル単位で設定しますか?

4

1 に答える 1

10

heightwidthラベルにテキストが含まれている場合は、ラベルのサイズをテキスト単位で定義します。@Elchonon Edelson のアドバイスに従い、フレームのサイズを設定 + 1 つの小さなトリック:

from tkinter import *
root = Tk()

def make_label(master, x, y, h, w, *args, **kwargs):
    f = Frame(master, height=h, width=w)
    f.pack_propagate(0) # don't shrink
    f.place(x=x, y=y)
    label = Label(f, *args, **kwargs)
    label.pack(fill=BOTH, expand=1)
    return label

make_label(root, 10, 10, 10, 40, text='xxx', background='red')
make_label(root, 30, 40, 10, 30, text='xxx', background='blue')

root.mainloop()
于 2013-05-03T16:42:33.347 に答える