使用 .grid 几何体时,Tkinter 列被拉伸 [英] Tkinter column getting stretched when using .grid geometry

查看:24
本文介绍了使用 .grid 几何体时,Tkinter 列被拉伸的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的程序中,我试图在一些复选框、标签和旋转框下方放置一个大文本框.但是,文本框的大小导致它所在的列扩展到一个很大的比例.我希望文本框变大,而不是它所在的列.

In my program, I'm trying to have a big text box sitting below some checkboxes, labels, and spinboxes. However, the size of the textbox is causing the column it is in to expand to a huge proportion. I want the textbox to be big, not the column it it is in.

输出结果如下:

这是我希望它看起来像什么的图片:

Here's a picture of what I want it to look like:

我想我需要对框架做一些事情,但是无论我怎么尝试,我都无法使显示正确.我也试过 columnspan 但无济于事.

I think I need to do something with frames, but whatever I try, I can't get the display to be correct. I've also tried columnspan but to no avail.

这是我的代码:

from tkinter import *
root = Tk()
root.wm_title("My Program")
root.geometry("1000x500")
root.config(bg='lightgray')

def createStrandBox(display):
    var = IntVar(root)
    #var.trace('w', someFunction)
    checkbox = Checkbutton(root, text=display, variable=var, bg='lightgray')   
    return checkbox;

def createSpinbox():
    var = IntVar(root)
    #var.trace('w', someFunction)
    spinbox = Spinbox(root, width=5, values=('0-1', 2, 3, 4, 5, 6))  
    return spinbox;

def createToLabel():
    toLabel = Label(bg='lightgray', text='to')
    return toLabel;

def createSeparator():
    separator = Frame(width=2, bd=1, bg='darkgray', relief=SUNKEN)
    return separator;

listeningCheck = Checkbutton(bg='lightgray', text='Listening') #Listening
listeningCheck.grid(row=0, column=0)

lSPLLevels = Label(bg='lightgray', text='SPL Levels') #SPL Levels
lSPLLevels.grid(row=1, column=1)

lStrandCheck1 = createStrandBox('Strand 1') #Strand 1
lStrandCheck1.grid(row=2, column=0)
lStrandCheck2 = createStrandBox('Strand 2') #Strand 2
lStrandCheck2.grid(row=3, column=0)
lStrandCheck3 = createStrandBox('Strand 3') #Strand 3
lStrandCheck3.grid(row=4, column=0)

preview = Label(bg='lightgray', text='Benchmark Preview') #Benchmark Preview
preview.grid(row=6, column=0, columnspan=2, sticky=W)

lStrand1Spin1 = createSpinbox() #Spinbox 1
lStrand1Spin1.grid(row=2, column=1)
lStrand1Spin2 = createSpinbox() #Spinbox 2
lStrand1Spin2.grid(row=3, column=1)
lStrand1Spin3 = createSpinbox() #Spinbox 3
lStrand1Spin3.grid(row=4, column=1)

to1 = createToLabel()
to1.grid(row=2, column=2, padx=(0,8)) #to 1
to2 = createToLabel()
to2.grid(row=3, column=2, padx=(0,8)) #to 2
to3 = createToLabel()
to3.grid(row=4, column=2, padx=(0,8)) #to 3

lStrand1Spin4 = createSpinbox() #Spinbox 4
lStrand1Spin4.grid(row=2, column=3)
lStrand1Spin5 = createSpinbox() #Spinbox 5
lStrand1Spin5.grid(row=3, column=3)
lStrand1Spin6 = createSpinbox() #Spinbox 6
lStrand1Spin6.grid(row=4, column=3)

benchmarkPreview = Text(root, height=8, width=50)
benchmarkPreview.grid(row=7, column=0)

mainloop()

推荐答案

使用 columnspan 使小部件跨越多列.

Use columnspan to make the widget span multiple columns.

benchmarkPreview.grid(row=7, column=0, columnspan=4)

这篇关于使用 .grid 几何体时,Tkinter 列被拉伸的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆