使用.grid manag偏移tkinter标尺的位置

2024-09-28 01:25:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在为一个学校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

然而,我不是一个如何的规模似乎是居中自己在这一行的基础上,滑块的中心,和顶部的数字球迷。这使得滑块看起来比它旁边的entry小部件低。你知道吗

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

我的问题是:我将如何潜在地将scale小部件的位置向上偏移给定的量(可能是5-10px?)从它的原始位置,将实际的滑块按在它前面的条目小部件上?你知道吗

请让我知道如果你需要任何额外的澄清

干杯

-肖恩


Tags: totextlabelsmain部件库存columnitem
1条回答
网友
1楼 · 发布于 2024-09-28 01:25:05

使用sticky='s'sticky='n'粘贴到单元格的底部(南)和顶部(北),我得到了这个结果

enter image description here

我在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()

使用stickypady=(0,20)作为一个小部件,我得到了这个

enter image description here

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()

相关问题 更多 >

    热门问题