python - 使用 .grid 管理器的 tkinter 比例偏移位置
问题描述
我目前正在为学校 Python 评估编写一个简单的库存管理软件。我的 GUI 包括列出所有库存商品,并让用户能够一次库存/出售多个商品。这是通过在每个项目旁边放置一个条目(购买数量)和一个比例小部件(出售数量)并使用“应用”按钮来实施更改来实现的(对于上下文,场景是一家漫画书店):
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 像素?),以推动实际滑块与之前的条目小部件对齐?
如果您需要任何额外的说明,请告诉我
干杯,
-肖恩
解决方案
使用sticky='s'
andsticky='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
这个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()
推荐阅读
- c# - 如何在 WPF 中运行不带参数的 R.exe
- python - 如何在dict理解中写两个else条件
- sql - 如果数据具有层次结构,如何设计 SSRS 报表和 SQL Server 表?
- c++ - 在OpenGL中高效绘制大量点云点?
- excel - 在excel中使用变量引用按升序过滤数据
- javascript - 我应该如何根据值对背景渐变进行动画处理?
- c - esp32用c而不是python闪烁
- sql-update - Redshift 更新内部连接
- asp.net - nhibernate,行被另一个事务更新或删除(或未保存的值映射不正确)
- c++ - 在使用比较器时按降序对向量数组进行排序(C++)