简体   繁体   English

Tkinter 缩小小部件之间的差距

[英]Tkinter closing the gap between widgets

i am sorry if it looks messy but how do i shorten the gap between the entry widget and the label widget called "tag" This is what it looks like right now:如果它看起来很乱,我很抱歉,但是我如何缩短入口小部件和名为“tag”的 label 小部件之间的差距这是它现在的样子:

当前显示截图

I want the entry box and the word "grade" to stick together.I feel like there is a base distance between the grids so i tried some geometry features but couldn't figure it out我希望输入框和“等级”这个词粘在一起。我觉得网格之间有一个基本距离,所以我尝试了一些几何特征,但无法弄清楚

import tkinter as tk
from tkinter import ttk
from tkinter import *


win = tk.Tk()
win.geometry("300x250")
win.title("Gpa Calculator")

def gpa_calc():
    pass

grade1 = tk.DoubleVar()
grade2 = tk.DoubleVar()
grade3 = tk.DoubleVar()
grade4 = tk.DoubleVar()
grade5 = tk.DoubleVar()
grade6 = tk.DoubleVar()


label1 = ttk.Label(win, text="Gpa Calculator",font = ("Times New Roman", 15)).grid(column=1,row=0,pady=0)



label1 = ttk.Label(win, text="Class 1").grid(column=0, row=1,)# Column ve row da degismesi gerekebilir
class1 = ttk.Entry(win, width=12, textvariable=grade1)
class1.grid(column=2, row=1,pady=5)
tag1 = ttk.Label(win, text="Gpa:").grid(column=1, row=1,)

label2 = ttk.Label(win, text="Class 2").grid(column=0, row=2,)
class2 = ttk.Entry(win, width=12, textvariable=grade2)
class2.grid(column=2, row=2,pady=5)
tag2 = ttk.Label(win, text="Gpa:").grid(column=1, row=2,)

label3 = ttk.Label(win, text="Class 3").grid(column=0, row=3,)
class3 = ttk.Entry(win, width=12, textvariable=grade3)
class3.grid(column=2, row=3,pady=5)
tag3 = ttk.Label(win, text="Gpa:").grid(column=1, row=3,)

label4 = ttk.Label(win, text="Class 4").grid(column=0, row=4,)
class4 = ttk.Entry(win, width=12, textvariable=grade4)
class4.grid(column=2, row=4,pady=5)
tag4 = ttk.Label(win, text="Gpa:").grid(column=1, row=4,)

label5 = ttk.Label(win, text="Class 5").grid(column=0, row=5,)
class5 = ttk.Entry(win, width=12, textvariable=grade5)
class5.grid(column=2, row=5,pady=5)
tag5 = ttk.Label(win, text="Gpa:").grid(column=1, row=5,)

label6 = ttk.Label(win, text="Class 6").grid(column=0, row=6,)
class6 = ttk.Entry(win, width=12, textvariable=grade6)
class6.grid(column=2, row=6,pady=5)
tag6 = ttk.Label(win, text="Gpa:").grid(column=1, row=6,)

The top label is defining the width of the center column.顶部 label 定义了中心列的宽度。 One way to solve this is to give that top label all 3 columns:解决此问题的一种方法是为顶部 label 提供所有 3 列:

label1 = ttk.Label(win, text="Gpa Calculator",font = ("Times New Roman", 15))
label1.grid(column=0,row=0,pady=0,columnspan=3)

Another good way to solve this is to make a dedicated Frame for the table, so that the Frame has it's own grid.解决这个问题的另一个好方法是为表格制作一个专用的框架,以便框架有自己的网格。 Then you can put that Frame in another grid as a single object.然后您可以将该框架作为单个 object 放在另一个网格中。

I'm not a pro, but can you delete paddings and use win.columnconfigure and win.rowconfigure to set cell by cell (or a list of cells) settings of the grid like this:我不是专业人士,但您可以删除填充并使用 win.columnconfigure 和 win.rowconfigure 设置网格的逐个单元格(或单元格列表)设置,如下所示:

win.columnconfigure(col,weight=1) 

: weight makes a column or row stretchable. : weight使列或行可拉伸。 (You can set pad, too ) (你也可以设置pad)

Sorry for my english, I'm sadly french对不起我的英语,可悲的是我是法语

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM