Python 连接按钮以运行添加标签的函数
我刚刚读完了一本名为《实用编程第二版》的Python书籍,我想我应该挑战自己,将我所学的知识应用到我的第一个工作便利店小程序中,创建一个使用tkinter作为接口订购的芯片列表。 我会输入每个品牌的芯片库存数量,按下“订购”按钮后,它会返回需要订购的每个品牌芯片的数量 以下是我目前掌握的代码:Python 连接按钮以运行添加标签的函数,python,python-3.x,button,tkinter,Python,Python 3.x,Button,Tkinter,我刚刚读完了一本名为《实用编程第二版》的Python书籍,我想我应该挑战自己,将我所学的知识应用到我的第一个工作便利店小程序中,创建一个使用tkinter作为接口订购的芯片列表。 我会输入每个品牌的芯片库存数量,按下“订购”按钮后,它会返回需要订购的每个品牌芯片的数量 以下是我目前掌握的代码: import tkinter as tk # Initiate tkinter window = tk.Tk() # Create a dictionary of brand of chips wit
import tkinter as tk
# Initiate tkinter
window = tk.Tk()
# Create a dictionary of brand of chips with a value of how many chips should be in stock
chips = {'Miss Vickies Original': 4, 'Miss Vikies Salt & Vinegar': 4}
# Start counting rows
row_num = 0
for brand in chips:
# Create label describing the brand of chips
label = tk.Label(window, text=brand)
label.grid(row=row_num, column=1)
# Create an entry box to input number of chips in stock
entry = tk.Entry(window)
entry.grid(row=row_num, column=2)
# Add one; To start at next row
row_num += 1
# Return number of chips to order
def order(entry_data, stock_required):
# Subtract how much is in stock from how much should be in stock
order_quantity = int(stock_required) - int(entry_data)
# Create label to the left of each chip with how many should be ordered
order_label = tk.Label(window, text="'Order: ', order_quantity")
order_label.pack(side='left')
# Order button
button = tk.Button(window, text='Order', command=lambda: order(entry.get(), chips[1]))
button.pack(side='bottom')
window.mainloop()
我想我把自己和我自己的代码lol搞混了。我很难弄清楚如何让底部的按钮触发计算,并在每个芯片标签的左侧显示order_标签
我在代码中看到的一个问题是,我不确定如何修复这个标签,因为该函数不包含循环,所以只能调用一次。解决这个问题的推荐方法是什么
我查过了。
但这不是一个相关的问题,因为我已经有了lambda:order函数
下面是它的外观:
这是我的第一个节目,因此鼓励任何建设性的批评 我添加了使代码按预期工作所需的功能;不过,您需要跟踪当前的库存水平,以使其变得有用
import tkinter as tk
def generate_order_quantities():
for brand, datafields in chips_entry_fields.items():
entry, quantity_to_order, label = datafields
recommended_stock_level = chips_stock_levels[brand]
try:
quantity_sold = int(entry.get())
except ValueError:
quantity_sold = 0
quantity_to_order.set(min(quantity_sold, recommended_stock_level))
if __name__ == '__main__':
# Initiate tkinter
window = tk.Tk()
# Create a dictionary of brand of chips_stock_levels with a value of how many chips_stock_levels should be in stock
chips_stock_levels = {'Miss Vickies Original': 4, 'Miss Vikies Salt & Vinegar': 4}
chips_quantities_sold = {'Miss Vickies Original': 0, 'Miss Vikies Salt & Vinegar': 0}
chips_entry_fields = {}
# Start counting rows
row_num = 0
for row, brand in enumerate(chips_stock_levels):
# Create label describing the brand of chips_stock_levels
label = tk.Label(window, text=brand)
label.grid(row=row, column=1)
# Create an entry box to input number of chips_stock_levels in stock
entry = tk.Entry(window)
chips_entry_fields[brand] = [entry]
entry.grid(row=row, column=2)
# Create label to the left of each chip with how many should be ordered
quantity_to_order = tk.IntVar()
chips_entry_fields[brand].append(quantity_to_order)
# quantity_to_order.set()
order_label = tk.Label(window, textvariable=quantity_to_order)
chips_entry_fields[brand].append(order_label)
order_label.grid(row=row, column=3)
# Order button
button = tk.Button(window, text='Order', command=generate_order_quantities)
button.grid(row=3, column=3)
window.mainloop()
我把所有的芯片都填到字典里,它超过了GUI中的tkinter窗口。我查看了文档中的滚动选项:,但运气不好。滚动是最好的解决方案吗?还是有更好的?