簡體   English   中英

Tkinter 網格間距問題

[英]Tkinter Grid Spacing Issue

所以我試圖創建一個基本的文本輸入東西來理解 Tkinter 的基礎知識,但是當我嘗試對某些東西進行網格化時,如果列或行大於 1,它會像 1

這是我的代碼:

from tkinter import *

window = Tk()
window.minsize(width=500, height=300)

# label

my_label = Label(text="Text", font=("Consolas", 24, "bold"))

my_label["text"] = "New Text"
my_label.config(text="New Text")

# my_label.pack()  # adding keyword parameters such as "expand=True" or "side='left'" can affect where it is positioned

# my_label.place(x=100, y=40)

my_label.grid(column=10, row=15)


# Button

def button_clicked():
    my_label["text"] = input.get()


button = Button(text="Click Me", command=button_clicked)
button.grid(row=1, column=1)

# Entry

input = Entry(width=10)


window.mainloop()

現在我希望 label 大約占屏幕的 3/4,如您所見,我使用(作為標簽)第 10 列和第 15 行。不過,當我嘗試運行它時,label 將只會是 go從按鈕斜向下。 這是 Tkinter 應該如何工作,還是我做錯了? 我將不勝感激任何幫助。

是的,這基本上就是 tkinter 的工作原理,它位於第 10 列,只是第 2-9 列的寬度均為零,因為它們什么都不包含,所以您最終只能看到 2 列。

要使某些東西“居中”,您需要使用Tk 官方網格教程中的grid_columnconfigure使其“邊界框”與包含的“框架”成比例

my_label.grid(column=10, row=15)
window.grid_columnconfigure(10,weight=1)  # column 10 will grow
window.grid_rowconfigure(15,weight=1)  # row 15 will grow

這允許邊界框增長並且 label 將保持居中,因為它沒有設置為粘在任何角落,但它被按鈕偏移了。

但如果您真的希望它位於確切的中心,那么您可以使 label 跨越比按鈕更多的列。

my_label.grid(column=1,columnspan=2, row=2)  # label spans columns 1 and 2
window.grid_columnconfigure(2,weight=1)  # column 2 will grow
window.grid_rowconfigure(2,weight=1)  # row 2 will grow.

你得到了所需的結果。

在此處輸入圖像描述

但現在我們希望按鈕和 label 都居中,我們可以將它們設置在同一列中,該列設置為隨着 window 的大小而增長,並使兩行增長以適應整個 window。

my_label.grid(column=1,columnspan=2, row=2, sticky="N")
window.grid_columnconfigure(1,weight=1)
window.grid_rowconfigure([1,2],weight=1)

在此處輸入圖像描述

如果您添加一些填充,只需使用grid_columnconfigurecolumncolumnspan以及sticky和它們的行對應物通常就足以在任何屏幕比例上獲得您想要的任何形狀。

暫無
暫無

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

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