#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. Большое вам спасибо, это сделало свою работу (: