#python #tkinter #grid-layout #tkinter-layout
#python #tkinter #макет сетки #tkinter-layout
Вопрос:
Я новичок в Tkinter, и у меня возникли некоторые проблемы с ярлыком Tkinter и виджетом ввода для отображения информации. Я могу исправить положение строки, но позиции столбцов для моего виджета ввода перепутаны.
-
Я размещаю запись рядом с меткой, но, похоже, между меткой и записью много пробелов.
-
Все мои метки начинаются с одной и той же позиции столбца, их ориентация в разных строках отклонена. Не очень плавное выравнивание.
Пробовал диапазон столбцов, grid_columnconfigure, sticky
from Tkinter import *
app = Tk()
app.title('Customer Information')
cidText=StringVar()
cidText.set("Customer ID")
labelCID=Label(app, textvariable=cidText, height=3)
cidValue=StringVar(app,value='1001')
cidEntry=Entry(app,textvariable=cidValue,width=4)
labelCID.grid(row=1,column=5)
cidEntry.grid(row=1,column=6)
labelText=StringVar()
labelText.set("First Name")
labelfname=Label(app, textvariable=labelText, height=2)
labelfname.grid(row=2,column=5)
fvalue=StringVar(app,value='Jill')
fentry=Entry(app,textvariable=fvalue,width=10)
fentry.grid(row=2,column=6)
lnameText=StringVar()
lnameText.set("last Name")
labelLname=Label(app, textvariable=lnameText, height=2)
labelLname.grid(row=2,column=7)
#lnameValue=StringVar(None)
lnameValue=StringVar(app,value='Miller')
lnameEntry=Entry(app,textvariable=lnameValue,width=20)
lnameEntry.grid(row=2,column=8)
strNameText=StringVar()
strNameText.set("Street Address")
labelStrName=Label(app, textvariable=strNameText, height=2)
labelStrName.grid(row=3,column=5,sticky=E)
strValue=StringVar(app,value='38 Main Street')
strEntry=Entry(app,textvariable=strValue,width=20)
strEntry.grid(row=3,column=6)
cityText=StringVar()
cityText.set("City")
labelCity=Label(app, textvariable=cityText, height=2)
labelCity.grid(row=3,column=7)
cityValue=StringVar(app,value='New York')
cityEntry=Entry(app,textvariable=cityValue,width=20)
cityEntry.grid(row=3,column=8)
stateText=StringVar()
stateText.set("State")
labelState=Label(app, textvariable=stateText, height=2)
labelState.grid(row=3,column=9)
stateValue=StringVar(app,value='NY')
stateEntry=Entry(app,textvariable=stateValue,width=2)
stateEntry.grid(row=3,column=10)
zipText=StringVar()
zipText.set("Zip")
labelzip=Label(app, textvariable=zipText, height=2)
labelzip.grid(row=3,column=11)
zipValue=StringVar(app,value='12345')
zipEntry=Entry(app,textvariable=zipValue,width=5)
zipEntry.grid(row=3,column=12)
Button(app, text='Quit', command=app.quit).grid(row=10, column=5, sticky=W)
zipText=StringVar()
zipText.set(" ")
labelzip=Label(app, textvariable=zipText, height=4)
labelzip.grid(row=15,column=11)
app.grid_columnconfigure(4, minsize=100)
app.mainloop()
Существует большой разрыв между некоторой меткой и записью в форме.
Я хочу, чтобы метки и запись располагались рядом друг с другом без особых пробелов
Комментарии:
1. Поскольку из «метки и запись рядом друг с другом без особых пробелов» неясно, добавьте ссылку на скриншот . Прочитайте о Tkinter.Grid.grid_columnconfigure-методе
2. Я смог найти обходной путь для этого. Сохраняя одинаковое значение ширины для всех виджетов ввода, которые находятся в одном столбце. например,: CustomerIDEntry=Entry (приложение, текстовая переменная=cidValue,width= 20) fnameEntry=Entry (приложение, текстовая переменная=fvalue,width = 20) streetNameEntry=Entry (приложение, текстовая переменная =strValue,width = 20) Это приводит к тому, что ширина всех этих записей составляет 20 пробелов. не нужны такие пробелы для поля идентификатора клиента. Я знаю не лучший подход, но пока работаю с ним.