【发布时间】:2021-08-05 11:07:15
【问题描述】:
我正在尝试为我的代码构建一个 Tkinter GUI,它在给定一个 数量。我为我的代码使用了 lambda 函数,因为我知道你不能使用 Tkinter 传递参数。
我提前为长代码的家伙道歉。我花了几个小时在它上面,却找不到修复它的方法。感谢您给我的任何帮助或建议。
这是我得到的错误,然后是我的代码:
NameError: name 'stack' is not defined
import tkinter as tk
from tkinter import *
from functools import partial
#Given a number of cents, return the least number of coins that sums to that amount
def solve(cents):
stack = []
result = 0
quarter = 25
dime = 10
nickel = 5
penny = 1
difference = abs(cents - result)
if cents == 25:
result += quarter
return stack.append("25")
if cents == 10:
result += dime
return stack.append("10")
if cents == 5:
result += nickel
return stack.append("5")
if cents == 1:
result += penny
return stack.append("1")
while cents != result:
while difference >= quarter:
result += quarter
stack.append("25")
difference = abs(cents - result)
while difference >= dime and difference < quarter:
result += dime
stack.append("10")
difference = abs(cents - result)
while difference >= nickel and difference < dime:
result += nickel
stack.append("5")
difference = abs(cents - result)
while difference >= penny and difference < nickel:
result += penny
stack.append("1")
difference = abs(cents - result)
newResult = print(stack)
return newResult
def print(stack):
Quarter = 0
Dime = 0
Nickel = 0
Penny = 0
for num in stack:
if num == "1":
Penny += 1
elif num == "5":
Nickel += 1
elif num == "10":
Dime += 1
elif num == "25":
Quarter += 1
return f"Minimum coins required are: {Quarter} Quarters, {Dime} Dimes, {Nickel} Nickels, {Penny} Pennies "
root = tk.Tk()
root.title('Minimum Coins Needed')
canvas1 = tk.Canvas(root, width = 400, height = 300)
canvas1.pack()
label1 = tk.Label(root, text= "Click Calculate to see the Result")
canvas1.create_window(200, 230, window=label1)
entry1 = tk.Entry (root)
canvas1.create_window(200, 140, window=entry1)
button1 = tk.Button(text='Calculate',command= lambda: print(stack))
canvas1.create_window(200, 180, window=button1)
button1.pack()
root.mainloop()
【问题讨论】:
-
解决方法只需将
stack = []放在函数之外
标签: python user-interface tkinter button nameerror