Впервые на python и получаю много полезной информации с этого сайта.
Я создаю диаграмму с помощью .grid (), а затем снова с кадрами в .pack () в качестве упражнения и проверяю,Я могу получить идентичные результаты.
Функция showchart_grid () работает и производит в значительной степени то, что я хочу создать.Это диаграмма, в которой нижний ряд содержит 14 квадратов, а верхний ряд представляет собой метки для этих квадратов, а иногда метки столбцов охватывают 2 квадрата.Вы можете увидеть это в атрибуте columnspan =.Есть несколько странных пробелов между метками столбцов в строке 0, но кроме этого все они выстраиваются в линию.
def showchart_grid():
root = Tk()
# create 14 squares on the grid
for i in range(1, 15):
spot = Label(root, text='square', bg='white', height=5, width=10, borderwidth=1, relief='solid', justify=CENTER)
spot.grid(row=1, column=i)
# create the column labels on top of the grid in row one
label0 = Label(root, text=0, bg="DodgerBlue", fg="white", height=2, width=10, borderwidth=1, relief='solid')
label0.grid(row=0, column=1)
label1 = Label(root, text=1, bg='CadetBlue1', height=2, width=20, borderwidth=1, relief='solid')
label1.grid(row=0, column=2, columnspan=2)
label2 = Label(root, text=2, bg='DodgerBlue', height=2, width=20, borderwidth=1, relief='solid')
label2.grid(row=0, column=4, columnspan=2)
label4 = Label(root, text=4, bg='CadetBlue1', height=2, width=20, borderwidth=1, relief='solid')
label4.grid(row=0, column=6, columnspan=2)
label6 = Label(root, text=6, bg='DodgerBlue', height=2, width=20, borderwidth=1, relief='solid')
label6.grid(row=0, column=8, columnspan=2)
label8 = Label(root, text=8, bg='CadetBlue1', height=2, width=20, borderwidth=1, relief='solid')
label8.grid(row=0, column=10, columnspan=2)
label11 = Label(root, text=11, bg='DodgerBlue', height=2, width=20, borderwidth=1, relief='solid')
label11.grid(row=0, column=12, columnspan=2)
label15 = Label(root, text=15, bg="CadetBlue1", height=2, width=10, borderwidth=1, relief='solid')
label15.grid(row=0, column=14)
mainloop()
Теперь, когда я пытаюсь сделать то же самое, создав рамку для меток столбцов ирамка для квадратов, позиции больше не совпадают, даже если размеры одинаковы.Как будто метки столбцов не заполняют весь кадр.Я испортил заполнение = и расширение =, но не смог понять, как именно.Примечание: в этой версии решена странная проблема с пробелами между метками столбцов.
def showchart_framespack_test():
root = Tk()
# define my frames
pointsframe = Frame(root, width=140)
pointsframe.pack(side=TOP)
playerframe = Frame(root, width=140)
playerframe.pack(side=TOP)
# create bottom row of squares with pack
for i in range(1, 15):
spot = Label(playerframe, text='empty', bg='white', height=5, width=10, borderwidth=1, relief='solid', justify=CENTER)
spot.pack(side=LEFT)
# create top row of labels with pack
label0 = Label(pointsframe, text=0, bg="DodgerBlue", fg="white", height=2, width=10, borderwidth=1, relief='solid')
label0.pack(side=LEFT)
label1 = Label(pointsframe, text=1, bg='CadetBlue1', height=2, width=20, borderwidth=1, relief='solid')
label1.pack(side=LEFT)
label2 = Label(pointsframe, text=2, bg='DodgerBlue', height=2, width=20, borderwidth=1, relief='solid')
label2.pack(side=LEFT)
label4 = Label(pointsframe, text=4, bg='CadetBlue1', height=2, width=20, borderwidth=1, relief='solid')
label4.pack(side=LEFT)
label6 = Label(pointsframe, text=6, bg='DodgerBlue', height=2, width=20, borderwidth=1, relief='solid')
label6.pack(side=LEFT)
label8 = Label(pointsframe, text=8, bg='CadetBlue1', height=2, width=20, borderwidth=1, relief='solid')
label8.pack(side=LEFT)
label11 = Label(pointsframe, text=11, bg='DodgerBlue', height=2, width=20, borderwidth=1, relief='solid')
label11.pack(side=LEFT)
label15 = Label(pointsframe, text=15, bg="CadetBlue1", height=2, width=10, borderwidth=1, relief='solid')
label15.pack(side=LEFT)
mainloop()
Как мне улучшить программирование, чтобы получить желаемый результат с 14 квадратами внизу, с метками сверху, чтокаждая линия идеально совпадает с границами 14 квадратов в нижнем ряду?
PS это функции, потому что они будут принимать входные данные и корректировать график как таковой, но сейчас я просто оставил его как «пустой» всепуть через.