Tkinter 网格管理器高度/宽度不一致

问题描述 投票:0回答:1

我对 tkinter 网格管理器的一致性有疑问。 我已经指定了columnconfigure,所以左侧部分有6,然后一列是1作为分隔符,然后在右侧(键盘)宽度是3。 据我了解,左侧应该是右侧的两倍大小。但屏幕上却不是。海特也有类似的问题。所有行都设置为 rowconfigure=1,但在屏幕上它们的高度不同。 我做错了什么? 我的程序显示问题的最小部分:

#!/usr/bin/env python3
# -*- coding: utf8 -*-

from tkinter import *


#***************************************************************************************************
root = Tk()
root.geometry("1024x600")

tab3=Frame(root,relief=SUNKEN, bd=5 )
tab3.pack(fill=BOTH, expand=True)

#specify column widths
Colwidths=[6,                       6,                      6,                      1,          3,          3,      3]
gui1=[
        [["Double\nline txt",1,1],      ["Double\nline txt",1,1],   ["Double\nline txt",1,1],   ["",1,1],   ["1",1,1],  ["2",1,1],  ["3",1,1]],
        [["145.0",1,1],                 ["133.7",1,1],              ["133.1",1,1],              ["",1,1],   ["4",1,1],  ["5",1,1],  ["6",1,1]],
        [["Double\nline txt",1,1],      ["TwoCel\ndblLine",1,2],    ["TwoCel\ndblLine",1,2],    ["",1,1],   ["7",1,1],  ["8",1,1],  ["9",1,1]],
        [["20.5",1,1],                  ["",1,1],                   ["",1,1],                   ["",1,1],   ["X",1,1],  ["0",1,1],  ["OK️",1,1]]
    ]

for i,v in enumerate(Colwidths): tab3.columnconfigure(i, weight=v)

for y,line in enumerate(gui1):
    tab3.rowconfigure(y, weight=1)  #all rows are same height
    for x, (txt,cs,rs) in enumerate(line):
        if txt!="":
            itm=Label(tab3,text=txt, bd=1, relief=SUNKEN, font=("Arial", 30, "bold"),bg='khaki')
            itm.grid(row=y,column=x, columnspan=cs,rowspan=rs, sticky=NSEW)

root.mainloop()

以及错误的输出: enter image description here

我认为字体太大,无法放入单元格中。所以我删除了粘性并重试并得到了这个: enter image description here

因此每个物品周围都有可见的空间,因此尺寸不应该成为问题。

tkinter grid row configure
1个回答
0
投票

为网格设置 uniform 选项

tab3.columnconfigure(i, weight=v, uniform="group1")
tab3.rowconfigure(y, weight=1, uniform="group2")
© www.soinside.com 2019 - 2024. All rights reserved.