Смещение положения шкалы tkinter с помощью .grid manager

#python #python-3.x #tkinter

#python #python-3.x #tkinter

Вопрос:

В настоящее время я пишу простое программное обеспечение для управления запасами для школьной оценки python. Мой графический интерфейс включает в себя перечисление всех товаров на складе и предоставление пользователю возможности складировать / продавать несколько товаров одновременно. Это было достигнуто путем размещения записи (сумма для покупки) и виджета масштаба (сумма для продажи) рядом с каждым товаром и использования кнопки «Применить» для внесения изменений (для контекста сценарий представляет собой магазин комиксов):

https://i.imgur.com/7cesQm5.png

Это код, который я использовал для создания новых виджетов из каждого файла (все они содержатся в словаре, извлеченном из файла CSV):

 itteration = 2

labels = {}

nameTitle = Label(main, text="Title").grid(row=1, column=1, padx=5)
stockTitle = Label(main, text="Stock").grid(row=1, column=2, padx=5)
buyTitle = Label(main, text="Amount to Buy").grid(row=1, column=3, padx=5)
sellTitle = Label(main, text="Amount to Sell").grid(row=1, column=4, padx=5)

for item in comic_books:

    name = item.replace(" ", "")
    nameStock = "{}Stock".format(item).replace(" ", "")
    nameBuy = "{}Buy".format(item).replace(" ", "")
    nameSell = "{}Sell".format(item).replace(" ", "")
    labels[name] = Label(main, text=item ":")
    labels[name].grid(column=1, row=itteration, padx=5)
    labels[nameStock] = Label(main, text=comic_books.get(item))
    labels[nameStock].grid(column=2, row=itteration, padx=5)
    labels[nameBuy] = Entry(main)
    labels[nameBuy].grid(column=3, row=itteration, padx=20)
    labels[nameSell] = Scale(main, from_=0, to=comic_books.get(item), orient=HORIZONTAL)
    labels[nameSell].grid(column=4, row=itteration, padx=5)
    itteration  = 1
  

Однако я не поклонник того, как шкалы, по-видимому, центрируются в строке на основе как центра ползунка, так и числа сверху. Это приводит к тому, что ползунок отображается ниже, чем виджет ввода рядом с ним.

https://i.imgur.com/9CQTvWS.png

Мой вопрос: как бы я мог потенциально сдвинуть положение виджетов масштаба вверх на заданную величину (возможно, 5-10 пикселей?) от его исходного положения, чтобы переместить фактический ползунок в соответствие с виджетом ввода перед ним?

Пожалуйста, дайте мне знать, если вам нужны дополнительные разъяснения

Приветствия,

-Шон

Комментарии:

1. вы можете попробовать использовать pady=value или pady=(top,bottom)

Ответ №1:

Используя sticky='s' и sticky='n' для привязки к нижней (южной) и верхней (северной) ячейкам, я получил это

введите описание изображения здесь

Я не использовал разные значения в pady

 import tkinter as tk

root = tk.Tk()

l = tk.Label(root, text='Label')
l.grid(column=1, row=0, padx=5, sticky='s', pady=10)

e = tk.Entry(root)
e.grid(column=2, row=0, padx=20, sticky='s', pady=10)

s = tk.Scale(root, from_=0, to=10, orient='horizontal')
s.grid(column=3, row=0, padx=5, sticky='n', pady=10)

root.mainloop()
  

Используя sticky with pady=(0,20) для одного виджета, я получил это

введите описание изображения здесь

 import tkinter as tk

root = tk.Tk()

l = tk.Label(root, text='Label')
l.grid(column=1, row=0, padx=5, sticky='s', pady=10)

e = tk.Entry(root)
e.grid(column=2, row=0, padx=20, sticky='s', pady=10)

s = tk.Scale(root, from_=0, to=10, orient='horizontal')
s.grid(column=3, row=0, padx=5, sticky='n', pady=(0,20))

root.mainloop()
  

Комментарии:

1. Большое вам спасибо, это сделало свою работу (: