Проблема с интервалом между виджетами ввода метки Python Tkinter

#python #tkinter #grid-layout #tkinter-layout

#python #tkinter #макет сетки #tkinter-layout

Вопрос:

Я новичок в Tkinter, и у меня возникли некоторые проблемы с ярлыком Tkinter и виджетом ввода для отображения информации. Я могу исправить положение строки, но позиции столбцов для моего виджета ввода перепутаны.

  1. Я размещаю запись рядом с меткой, но, похоже, между меткой и записью много пробелов.

  2. Все мои метки начинаются с одной и той же позиции столбца, их ориентация в разных строках отклонена. Не очень плавное выравнивание.

Пробовал диапазон столбцов, 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 пробелов. не нужны такие пробелы для поля идентификатора клиента. Я знаю не лучший подход, но пока работаю с ним.