簡體   English   中英

Tkinter.grid間距選項?

[英]Tkinter.grid spacing options?

我是Tkinter的新手,我嘗試使用網格布局管理器創建應用程序。 但是,我似乎找不到按照我想要的方式使用它的方法。 我需要做的是模擬一個充滿'單元格'的網格,以便我可以放置單元格(3,8)中的標簽或單元格(5,1)中的按鈕。 這是我嘗試過的一個例子:

import tkinter as tk
root = tk.Tk()

label = tk.Label(root, text = 'Label')
label.grid(column = 3, row = 8)

button = tk.Button(root, text = 'Button')
button.grid(column = 5, row = 1)

Tkinter保持每個小部件的相對位置(即button位於label上方和右側),但它忽略了它們之間的任何空間。 我已經搜索了一下這個問題,發現了weight ,但這似乎並不是我想要的; 我想要一些獨立於labelbutton布局的東西。 謝謝您的幫助!

您可以通過在窗口小部件的父grid_rowconfigure上運行grid_columnconfiguregrid_rowconfigure方法來指定網格中列/行的間距(包括那些不包含窗口小部件的行)(在這種情況下,父級將為root )。

例如,要為第4列設置最小寬度,請將最后一行添加到代碼中:

import Tkinter as tk
root = tk.Tk()

label = tk.Label(root, text = 'Label')
label.grid(column = 3, row = 8)

button = tk.Button(root, text = 'Button')
button.grid(column = 5, row = 1)

root.grid_columnconfigure(4, minsize=100)  # Here

如果要為所有列和行設置最小大小,可以使用以下方法迭代它們:

col_count, row_count = root.grid_size()

for col in xrange(col_count):
    root.grid_columnconfigure(col, minsize=20)

for row in xrange(row_count):
    root.grid_rowconfigure(row, minsize=20)

編輯有趣的是,effbot聲明:

minsize =定義行的最小大小。 請注意,如果某行完全為空,則即使設置了此選項,也不會顯示該行。

(italics mine)但是就我所嘗試的情況而言,它似乎也適用於空的行和列。

默認情況下,行的高度為零,列的寬度為零。 因此,沒有任何內容的行和列將是不可見的,不會占用任何空間。

暫無
暫無

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

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