Как установить/изменить длину/ширину объекта ttk.Separator в Tkinter?ttk.Separator set length/width
ttk.Separator(self, orient='horizontal').grid(column=0,
row=0, columnspan=2, sticky='ew')
Кажется, что ColumnSpan пытается сделать эту работу, но когда у вас есть несколько сепараторов с тем же ColumnSpan, они, кажется, имеют разную длину - любую идею, почему?
Вот простой быстрый одноранговой «грязный» тестовый пример:
import ttk
from Tkinter import *
class myTestFrame(Frame):
def __init__(self):
Frame.__init__(self)
self.master.title("My Test Frame")
self.master.minsize(350, 150)
self.grid(sticky=W+N+S+E)
firstLayer = Frame(self)
firstLayer.pack(side="top", fill="x")
secondLayer = Frame(self)
secondLayer.pack(side="top", fill="x")
thirdLayer = Frame(self)
thirdLayer.pack(side="top", fill="x")
labelText=StringVar()
labelText.set("Enter your area zip code: ")
labelDir=Label(firstLayer, textvariable=labelText, fg="black", font = "Calibri 10 bold")
labelDir.grid(row=2, column=0, sticky="W")
zipCode=IntVar(None)
entryFieldFrame=Entry(firstLayer,textvariable=zipCode,width=5)
entryFieldFrame.grid(row=2, column=1, sticky="W", padx=31)
ttk.Separator(secondLayer, orient='horizontal').grid(column=0,
row=0, columnspan=2, sticky='ew')
labelText=StringVar()
labelText.set("Enter your age: ")
labelDir=Label(secondLayer, textvariable=labelText, fg="black", font = "Calibri 10 bold")
labelDir.grid(row=2, column=0, sticky="W")
age=IntVar(None)
age.set(1.0)
entryFieldFrame=Entry(secondLayer,textvariable=age,width=5)
entryFieldFrame.grid(row=2, column=1, sticky="W", padx=83)
ttk.Separator(thirdLayer, orient='horizontal').grid(column=0,
row=0, columnspan=2, sticky='ew')
labelText=StringVar()
labelText.set("Enter your brother's age: ")
labelDir=Label(thirdLayer, textvariable=labelText, fg="black", font = "Calibri 10 bold")
labelDir.grid(row=2, column=0, sticky="W")
brothersAge=IntVar(None)
entryFieldFrame=Entry(thirdLayer,textvariable=brothersAge,width=5)
entryFieldFrame.grid(row=2, column=1, sticky="W", padx=29)
if __name__ == "__main__":
testFrame = myTestFrame()
testFrame.mainloop()
'columnspan' не влияет на ширину _per se_, он просто определяет, сколько столбцов занимает виджет. Фактическая ширина зависит от того, насколько велики столбцы. –
, то почему-то можно явно (re) определить ширину разделителя, так как у меня разные столбцы с разными длинами, но все же вы хотите иметь разделители с SAME width/length? Похоже, что опция ** padx ** в спецификации ** grid ** также не помогает. – schmi
да и нет. Есть, конечно, трюки, которые вы можете сделать, например, поместить разделитель в кадр, а затем установить размер кадра, но это редко требуется. Сепараторы предназначены для разделения элементов и, как правило, имеют одинаковую ширину или высоту того, что они разделяют. Кажется, что вы используете их для какой-то другой цели, но в вашем вопросе недостаточно информации, чтобы предложить альтернативу. Пожалуйста, дайте mcve (http://www.stackoverflow.com/help/mcve), чтобы проиллюстрировать, как вам нужны разделители фиксированной ширины с столбцами переменной ширины. –