Проблема в том, что pizzaCost
является локальной переменной. Вызов работает, но затем переменная получает сборщик мусора, а значение выбрасывается.
Если вы сделаете переменную глобальной, вызов invoke
будет работать. Учитывая, что вы, вероятно, захотите получить доступ к значению позже, вам все равно придется сделать его глобальным, поскольку вы не используете классы.
В следующем примере обратите внимание, как pizzaCost
определяется как глобальный внутри firstPizza
.
from tkinter import *
def initialize():
Label(window,text = "Customer Name").grid(column = 0, row = 0)
customerName = StringVar()
nameEntry = Entry(window,textvariable = customerName)
nameEntry.grid(column = 1, row = 0)
def firstPizza():
global pizzaCost
Label(window,text = "Pizza 1").grid(column = 0,row = 1)
pizzaCost = DoubleVar() #12 and 10
largeButton = Radiobutton(window,text = "Large $15.95",value = 15.95,variable = pizzaCost)
mediumButton = Radiobutton(window,text = "Medium $12.95",value = 12.95, variable = pizzaCost)
smallButton = Radiobutton(window,text = "Small $10.95",value = 10.95, variable = pizzaCost)
largeButton.grid(column = 0,row = 2)
largeButton.invoke()
mediumButton.grid(column = 1, row = 2)
smallButton.grid(column = 2, row = 2)
firstPizza()
window = Tk()
initialize()
window.mainloop()