簡體   English   中英

如何使 tkinter 中顯示在 3 列網格中的兩個小部件之間的間距相等?

[英]How to make the spacing between two widgets displayed in a 3 column grid equal in tkinter?

以下代碼循環三次以創建三個標簽小部件,

import tkinter as tk

root = tk.Tk()
root.geometry("400x200")

frm = tk.Frame(master=root, bg="yellow")
frm.columnconfigure(index=(0, 1, 2), weight=1)

for i in range(3):
    tk.Label(master=frm, text=i, bg="red", padx=40, pady=10).grid(row=0, column=i)

frm.pack(fill="both", expand=True)

root.mainloop()

給出以下輸出(正如人們所期望的):

在此處輸入圖片說明

但是,以下代碼只循環兩次以創建兩個標簽小部件,

import tkinter as tk

root = tk.Tk()
root.geometry("400x200")

frm = tk.Frame(master=root, bg="yellow")
frm.columnconfigure(index=(0, 1, 2), weight=1)

for i in range(2):
    tk.Label(master=frm, text=i, bg="red", padx=40, pady=10).grid(row=0, column=i)

frm.pack(fill="both", expand=True)

root.mainloop()

給出這個輸出:

在此處輸入圖片說明

如您所見,兩個小部件沒有正確間隔開。 我想得到這種輸出:

在此處輸入圖片說明

我如何實現這一目標? 為什么輸出 #2 中的間距不均勻?

請記住,我想在不創建任何其他標簽小部件的情況下執行此操作,因為我使用類似的方法在我使用 tkinter 制作的應用程序中顯示搜索結果。 我問這個問題是因為當我嘗試僅顯示兩個搜索結果或僅顯示一個搜索結果時,我在該應用程序中面臨同樣的問題。

預先感謝您的回答! 請原諒我,因為我只是 tkinter 的初學者。

PS:我知道這與問題有點不同,但如果您能指出一些來源/教程,我可以更好地了解有關 tkinter 工作原理的更多信息,請這樣做!

注意:我使用的是 Python v3.8.5

為什么輸出 #2 中的間距不均勻?

原因是因為即使您只使用兩列,您也是三列,權重為 1。

如果您的目標是三個大小相等的列,則應使用uniform選項。 weight僅適用於未使用的空間,它絕不保證大小相等的列。

要獲得三個大小相等的列,請將所有三列的uniform值設置為相同的值。 值是什么並不重要,只要所有列都相同即可。

frm.columnconfigure(index=(0, 1, 2), weight=1, uniform="equal")

這是結果:

截屏

暫無
暫無

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

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