Ich bin relativ neu zu Tkinter und ich versuche, eine GUI mit drei horizontal ausgerichteten Eingabe-Widgets und drei entsprechende Label-Widgets zu erstellen. Ich habe Probleme damit, die Label-Widgets unterhalb der Eingabe-Widgets zu platzieren, ohne die Ausrichtung der Eingabefelder zu stören (d. H. Packseite = LEFT). Hier ist ein Beispiel Momentaufnahme der GUI ohne die Beschriftungen unter den Eingabefeldern:Tkinter Label-Widget unter Eintrag Widget
Derzeit mein Skript wie folgt aussieht, mit dem Label-Widgets auf Kommentar:
#!/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()
Als ich die Kommentar- Label-Widgets ich folgendes:
Kann mir jemand in der r führen Wie kann man dies erreichen? Oder schlagen Sie einen besseren Weg vor, es zu implementieren? Gibt es auch eine Möglichkeit, die Größe der Eingabe-Widgets zu steuern? Ich möchte, dass sie kleiner sind. Vielen Dank im Voraus!
spezifizieren Arbeitet wie ein Charme! Die einzige Sache, die nicht richtig funktioniert, ist das Label (Sub, text = "Erstelle x Mesh-Knoten"). Grid (columspan = 3). Das Etikett wird über den drei Einträgen gedruckt. – user1332577
Siehe bearbeiten, denke, das ist, was du meintest Nicht sicher, was du meinst, indem du über die drei Einträge druckst – Pythonista
Das hat den Trick gemacht. Vielen Dank! – user1332577