簡體   English   中英

在 Python 中設置按鈕的位置?

[英]Setting the position on a button in Python?

我剛剛編寫了一個代碼來創建一個窗口(使用 TKinter)並顯示一個工作按鈕。

b = Button(master, text="get", width=10, command=callback)

但我想在這個下面有多個按鈕。

你如何設置按鈕的行和列? 我試圖添加row = 0, column = 0,但這不起作用。

謝謝

使小部件出現需要您使用 Tkinter 所謂的“幾何管理器”來定位它。 這三個管理器是gridpackplace 每個人都有優點和缺點。 這三個管理器被實現為所有小部件上的方法。

grid ,顧名思義,非常適合在網格中放置小部件。 您可以指定行和列、行和列的跨度、填充等。

例子:

b = Button(...)
b.grid(row=2, column=3, columnspan=2)

pack使用盒子比喻,讓您可以沿着容器的一側“打包”小部件。 pack 非常擅長全垂直或全水平布局。 例如,工具欄(widgets 在水平線上對齊)是使用 pack 的好地方。

例子:

b = Button(...)
b.pack(side="top", fill='both', expand=True, padx=4, pady=4)`

place是最少使用的幾何管理器。 使用 place 您可以為小部件指定確切的 x/y 位置和確切的寬度/高度。 它有一些不錯的功能,例如能夠使用絕對坐標或相對坐標(例如:您可以將小部件放置在 10,10,或小部件寬度或高度的 50%)。

gridpack不同,使用place不會導致父小部件展開或折疊以適合已放置在其中的所有小部件。

例子:

b = Button(...)
b.place(relx=.5, rely=.5, anchor="c")

使用這三個幾何管理器,您幾乎可以執行您可以想象的任何類型的布局。

astynax 是對的。 按照你給出的例子:

MyButton1 = Button(master, text="BUTTON1", width=10, command=callback)
MyButton1.grid(row=0, column=0)

MyButton2 = Button(master, text="BUTTON2", width=10, command=callback)
MyButton2.grid(row=1, column=0)

MyButton3 = Button(master, text="BUTTON3", width=10, command=callback)
MyButton3.grid(row=2, column=0)

應該創建 3 行按鈕。 使用 grid 比使用 pack 好很多。 但是,如果您在一個按鈕上使用網格並在另一個按鈕上打包,它將不起作用並且您將收到錯誤消息。

嘗試網格幾何管理器

btns = [
    (lambda ctl: ctl.grid(row=r, column=c) or ctl)(
        Button(text=str(1 + r * 3 + c)))
    for c in (0,1,2) for r in (0,1,2)]

結果:

[1][2][3]
[4][5][6]
[7][8][9]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM