13

私はtkinterで少し遊んでいますが、「sticky」属性がボタンで機能していないように見える理由がわかりません。スティッキーをNWに指定しました。これにより、ボタンが左上端にくっつくはずですが、何らかの理由で右上にくっつきます。なぜですか?

from tkinter import *
from tkinter import ttk

def test():
    name = userName.get()
    text = "Hello {0}! Pleased to meet you.".format(name)
    greeting.set(text)

window = Tk()

greeting = StringVar()
userName = StringVar()

name = Entry(window, textvariable=userName)
name.grid(column=1, row=1, sticky=NW)

button = Button(window, text="greeting", command=test)
button.grid(column=2, row=1, sticky=NW)

label = Label(window, textvariable=greeting)
label.grid(column=1, row=2, sticky=NW)

#creating a rectangle
canvas = Canvas(window)
canvas.grid(column=1, row=2)
#attributes are x,y coordinates of two points
x = canvas.create_rectangle(5,5,115,115)    

mainloop()
4

2 に答える 2

11

スティッキー属性は、グリッド全体またはウィンドウ全体ではなく、ウィジェットが存在するセルに適用されます。つまり、ウィジェットそのセルのnwコーナーに固定されています。セルがボタンとまったく同じ幅であるため、わかりません。

ボタンを右上のセル(行1、列2)に配置しているが、(ウィンドウ全体の)左上にボタンを配置したいので、何が必要かを正確に知ることは困難です。何を達成しようとしているのかを知らなければ、推奨事項を作成するのは困難です。

グリッドレイアウトマネージャーを学ぶ最も簡単な方法は、紙と鉛筆を使うことです。グリッドの方眼紙を取り出して、その紙にウィジェットを描きます。次に、ウィジェットをどこに配置するかが明らかになります。

また、特に属性に関して、rowconfigureおよびコマンドについて学習する必要があります。この属性を使用すると、どの行と列が拡大および縮小して余分なスペースを占めるかを識別できます。これらの属性を空の行と列に適用できることを知っておくと便利です。これは、内部ウィジェットを同じサイズのままにし、GUIのエッジに余分なものを適用する場合に便利です(通常は役に立ちませんが、場合によっては役に立ちません)。columnconfigureweight

大まかな目安として、各ウィンドウには1つの「メジャー」ウィジェット(UIを支配するウィジェット)が必要です。通常、これはキャンバスまたはテキストウィジェットですが、そうである必要はありません。そのウィジェットを見つけて、行と列の重みを1(1)にして、ユーザーがウィンドウのサイズを変更したときにウィジェットが拡大および縮小するようにします。あなたの場合、これは行2、列1のキャンバスになります。

于 2011-05-30T12:49:28.973 に答える
1

重要なのは、グリッドセルがボタンとまったく同じサイズであるということです。EかWかはわかりません...すべてのウィジェットを互いに下に配置することで確認できます(すべての行0と列0)。 -4)その場合、ボタンが北西に表示されます。お役に立てれば...

于 2011-05-30T09:44:05.443 に答える