Python 将Tkinter标签小部件设置在条目小部件下方

Python 将Tkinter标签小部件设置在条目小部件下方,python,user-interface,tkinter,widget,Python,User Interface,Tkinter,Widget,我对Tkinter比较陌生,我正在尝试创建一个包含三个水平对齐的条目小部件和三个相应的标签小部件的GUI。我正在努力解决如何在不影响输入框对齐的情况下将标签小部件放在输入小部件下面的问题(即,pack-side=LEFT)。下面是一个GUI快照示例,没有输入框下方的标签: 当前我的脚本如下所示,标签小部件被注释掉: #!/usr/bin/python from sys import exit from Tkinter import * from subprocess import Popen

我对Tkinter比较陌生,我正在尝试创建一个包含三个水平对齐的条目小部件和三个相应的标签小部件的GUI。我正在努力解决如何在不影响输入框对齐的情况下将标签小部件放在输入小部件下面的问题(即,pack-side=LEFT)。下面是一个GUI快照示例,没有输入框下方的标签:

当前我的脚本如下所示,标签小部件被注释掉:

#!/usr/bin/python

from sys import exit
from Tkinter import *
from subprocess import Popen, PIPE
from time import sleep
from os.path import exists
import os
import time
import sys
import ttk

#Initialize Tkinter by creating Tk root widget, which is a window with a
title bar. The root widget has to be created before any other widgets.

Root = Tk()
Root.title("GUI")

class Command:
    def __init__(self, func, *args, **kw):
        self.func = func
        self.args = args
        self.kw = kw
    def __call__(self, *args, **kw):
        args = self.args+args
        kw.update(self.kw)
        self.func(*args, **kw)

 #Script definitions#

 def quitter():
    exit(0)


#Button organization and layout#


Sub0 = Frame(Root)
Sub = Frame(Sub0)

#X mesh node
Label(Sub, text = "Create x mesh nodes").pack(side = TOP, pady = 5)

#x min text box area
v1=StringVar()
#Create entry widge to get user input, in this case a text string for the x      
min mesh

Entry(Sub, textvariable=v1).pack(side = LEFT, pady = 5, padx = 5)
#Label(Sub, text = "min").pack(side = BOTTOM, pady = 5, padx = 5)


#x max text box area
v2=StringVar()
Entry(Sub, textvariable=v2).pack(side = LEFT, pady = 5, padx = 5)
#Label(Sub, text = "max").pack(side = BOTTOM, pady = 1)

#x step text box area
v3=StringVar()
Entry(Sub, textvariable=v3).pack(side = LEFT, pady = 5, padx = 5)
#Label(Sub, text = "step increment").pack(side = LEFT, pady = 1)

Sub.pack(side = TOP)
Frame(Sub0,height=1, relief = GROOVE, bg="black").pack(side = TOP, fill = 
BOTH, pady= 5)


#GUI Organization#


Sub0.pack(side = TOP, padx = 10)

Button(Root, text = "Quit", command = quitter).pack(side = TOP, pady = 5)

#The window will not appear until we enter the Tkinter event loop. Script
will remain in the event loop until we close the window.

Root.mainloop()
当我取消对标签小部件的注释时,我得到以下信息:


有人能指导我如何实现这一目标吗?或者提出更好的实施方法?另外,是否有一种方法可以控制条目小部件的大小?我想要小一点的。提前谢谢你

您可以使用
栅格
几何图形管理器执行以下操作:

from sys import exit
from Tkinter import *
from subprocess import Popen, PIPE
from time import sleep
from os.path import exists
import os, time, sys, ttk

#Initialize Tkinter by creating Tk root widget, which is a window with a
Root = Tk()
Root.title("VIZ TOOL")

class Command:
    def __init__(self, func, *args, **kw):
        self.func = func
        self.args = args
        self.kw = kw
    def __call__(self, *args, **kw):
        args = self.args+args
        kw.update(self.kw)
        self.func(*args, **kw)

 #Script definitions#

def quitter():
    exit(0)


#Button organization and layout#


Sub0 = Frame(Root)
Sub = Frame(Sub0)

#X mesh node
Label(Sub, text = "Create x mesh nodes").grid(columnspan=3)

#x min text box area
v1=StringVar()
#Create entry widge to get user input, in this case a text string for the x      

Entry(Sub, textvariable=v1).grid(row=1, column=0)
Label(Sub, text = "min").grid(row=2, column=0)


#x max text box area
v2=StringVar()
Entry(Sub, textvariable=v2).grid(row=1, column=1)
Label(Sub, text = "max").grid(row=2, column=1)
#x step text box area
v3=StringVar()
Entry(Sub, textvariable=v3).grid(row=1, column=2)
Label(Sub, text = "step increment").grid(row=2, column=2)

Sub.pack(side = TOP)
Frame(Sub0,height=1, relief = GROOVE, bg="black").pack(side = TOP, fill = 
BOTH, pady= 5)


#GUI Organization#


Sub0.pack(side = TOP, padx = 10)

Button(Root, text = "Quit", command = quitter).pack(side = TOP, pady = 5)

#The window will not appear until we enter the Tkinter event loop. Script

Root.mainloop()
对于条目的大小,您可以执行以下操作:

Root.option_add("*Entry.Width", 5) #10 is default

使用类似这样的选项add将覆盖所有条目小部件的大小,您可以使用
条目(…,width=*,…)上的
width
关键字指定单个大小

您可以使用
网格
几何体管理器执行以下操作:

from sys import exit
from Tkinter import *
from subprocess import Popen, PIPE
from time import sleep
from os.path import exists
import os, time, sys, ttk

#Initialize Tkinter by creating Tk root widget, which is a window with a
Root = Tk()
Root.title("VIZ TOOL")

class Command:
    def __init__(self, func, *args, **kw):
        self.func = func
        self.args = args
        self.kw = kw
    def __call__(self, *args, **kw):
        args = self.args+args
        kw.update(self.kw)
        self.func(*args, **kw)

 #Script definitions#

def quitter():
    exit(0)


#Button organization and layout#


Sub0 = Frame(Root)
Sub = Frame(Sub0)

#X mesh node
Label(Sub, text = "Create x mesh nodes").grid(columnspan=3)

#x min text box area
v1=StringVar()
#Create entry widge to get user input, in this case a text string for the x      

Entry(Sub, textvariable=v1).grid(row=1, column=0)
Label(Sub, text = "min").grid(row=2, column=0)


#x max text box area
v2=StringVar()
Entry(Sub, textvariable=v2).grid(row=1, column=1)
Label(Sub, text = "max").grid(row=2, column=1)
#x step text box area
v3=StringVar()
Entry(Sub, textvariable=v3).grid(row=1, column=2)
Label(Sub, text = "step increment").grid(row=2, column=2)

Sub.pack(side = TOP)
Frame(Sub0,height=1, relief = GROOVE, bg="black").pack(side = TOP, fill = 
BOTH, pady= 5)


#GUI Organization#


Sub0.pack(side = TOP, padx = 10)

Button(Root, text = "Quit", command = quitter).pack(side = TOP, pady = 5)

#The window will not appear until we enter the Tkinter event loop. Script

Root.mainloop()
对于条目的大小,您可以执行以下操作:

Root.option_add("*Entry.Width", 5) #10 is default

使用像这样的添加选项将覆盖所有条目小部件的大小,您可以使用
条目(…,width=*,…)上的
width
关键字指定单个大小。

效果很好!但唯一不能正常工作的是标签(Sub,text=“Create x mesh nodes”).grid(columnspan=3)。标签打印在三个条目上方。请参见编辑,认为这是您的意思不确定“打印在三个条目上方”的含义是什么!但唯一不能正常工作的是标签(Sub,text=“Create x mesh nodes”).grid(columnspan=3)。标签打印在三个条目上方。请参见编辑,认为这是您的意思不确定“打印在三个条目上方”是什么意思