Я знаю, что вопрос, подобный этому, был задан, и я перепробовал все, что было предложено, чтобы решить проблему, но я не могу решить эту проблему.Я делаю документ о том, что при нажатии радиокнопки появляется вторая радиокнопка, у которой есть варианты, которые будут варьироваться в зависимости от реакции на первую радиокнопку.Проблема в том, что ничего не происходит после выбора первой радиокнопки, переменная не установлена равной значению, которое должно быть, если я правильно понимаю ... Я даже избавился от своих циклов, которые создали кнопки и добавили дополнительную функцию вкомандная строка в попытке установить переменную, но не повезло ... Я начинаю думать, что это невозможно сделать с помощью радиокнопок ... Кто-нибудь знает, если я пропускаю что-то, что не позволяет установить переменную?
from tkinter import Tk, Label, IntVar, Radiobutton
class pricingDoc:
def __init__(self, master):
self.master = master
master.title("Dyna-Vac Equipment Pricing GUI")
models = ["DJ5.636", "DJ1225", "DJ2040", "DJ4020", "DJ4030", "DJ6520"]
model_prices = [8139.00, 23770.00, 48050.00, 48040.00, 48030.00, 66050.0]
reels = ["""3/8" x 150'""", """1/2" x 300'""", """1/2" x 500'""", """3/4" x 600'""",
"""3/4" x 800'""", """1" x 600'""", """1" x 800'"""]
reel_prices = [0.00, 0.00, 850.00, 0.00, 1050.00, 0.00, 850.00]
self.label1 = Label(master, text="Jet Trailer Model")
self.label1.grid(row=1, column=1)
self.label2 = Label(master, text="Price, in USD")
self.label2.grid(row=1, column=3)
def showchoice(var1, updateint):
var1.set(updateint)
var1 = IntVar(master)
row_counter = 2
self.modelbutton = Radiobutton(master, text=models[0], variable=var1, value=0, indicatoron=False,
activebackground="green", width=12, command=lambda: showchoice(var1, 0))
self.modelbutton.grid(row=row_counter, column=1)
row_counter += 1
self.modelbutton = Radiobutton(master, text=models[1], variable=var1, value=1, indicatoron=False,
activebackground="green", width=12, command=lambda: showchoice(var1, 1))
self.modelbutton.grid(row=row_counter, column=1)
row_counter += 1
self.modelbutton = Radiobutton(master, text=models[2], variable=var1, value=2, indicatoron=False,
activebackground="green", width=12, command=lambda: showchoice(var1, 2))
self.modelbutton.grid(row=row_counter, column=1)
row_counter += 1
self.modelbutton = Radiobutton(master, text=models[3], variable=var1, value=3, indicatoron=False,
activebackground="green", width=12, command=lambda: showchoice(var1, 3))
self.modelbutton.grid(row=row_counter, column=1)
row_counter += 1
self.modelbutton = Radiobutton(master, text=models[4], variable=var1, value=4, indicatoron=False,
activebackground="green", width=12, command=lambda: showchoice(var1, 4))
self.modelbutton.grid(row=row_counter, column=1)
row_counter += 1
self.modelbutton = Radiobutton(master, text=models[5], variable=var1, value=5, indicatoron=False,
activebackground="green", width=12, command=lambda: showchoice(var1, 5))
self.modelbutton.grid(row=row_counter, column=1)
row_counter = 2
for price in model_prices:
self.label3 = Label(master, text=price)
self.label3.grid(row=row_counter, column=3)
row_counter += 1
self.label4 = Label(master, text="model {} is chosen".format(var1.get()))
self.label4.grid(row=row_counter, column=1)
row_counter += 1
self.label5 = Label(master, text="Reel Size Selection")
self.label5.grid(row=row_counter, column=1)
row_counter += 1
var2 = IntVar(master)
if var1.get() == 0:
self.reelbutton = Radiobutton(master, text=reels[0], variable=var2, value=0, indicatoron=False,
activebackground="green", width=12)
self.reelbutton.grid(row=row_counter, column=1)
row_counter += 1
row_counter = 10
self.label6 = Label(master, text=reel_prices[0])
self.label6.grid(row=row_counter, column=3)
elif 1 <= var1.get() <= 2:
self.reelbutton = Radiobutton(master, text=reels[1], variable=var2, value=1, indicatoron=False,
activebackground="green", width=12)
self.reelbutton.grid(row=row_counter, column=1)
self.label6 = Label(master, text=reel_prices[1])
self.label6.grid(row=row_counter, column=3)
row_counter += 1
self.reelbutton = Radiobutton(master, text=reels[2], variable=var2, value=2, indicatoron=False,
activebackground="green", width=12)
self.reelbutton.grid(row=row_counter, column=1)
self.label7 = Label(master, text=reel_prices[2])
self.label7.grid(row=row_counter, column=3)
row_counter += 1
elif 3 <= var1.get() <= 4:
self.reelbutton = Radiobutton(master, text=reels[3], variable=var2, value=3, indicatoron=False,
activebackground="green", width=12)
self.reelbutton.grid(row=row_counter, column=1)
self.label6 = Label(master, text=reel_prices[3])
self.label6.grid(row=row_counter, column=3)
row_counter += 1
self.reelbutton = Radiobutton(master, text=reels[4], variable=var2, value=4, indicatoron=False,
activebackground="green", width=12)
self.reelbutton.grid(row=row_counter, column=1)
self.label7 = Label(master, text=reel_prices[4])
self.label7.grid(row=row_counter, column=3)
row_counter += 1
elif var1.get() == 5:
self.reelbutton = Radiobutton(master, text=reels[5], variable=var2, value=5, indicatoron=False,
activebackground="green", width=12)
self.reelbutton.grid(row=row_counter, column=1)
self.label6 = Label(master, text=reel_prices[5])
self.label6.grid(row=row_counter, column=3)
row_counter += 1
self.reelbutton = Radiobutton(master, text=reels[6], variable=var2, value=6, indicatoron=False,
activebackground="green", width=12)
self.reelbutton.grid(row=row_counter, column=1)
self.label7 = Label(master, text=reel_prices[6])
self.label7.grid(row=row_counter, column=3)
row_counter += 1
row_counter += 1
self.label8 = Label(master, text="Total unit price as built: {}".format(model_prices[var1.get()] +
reel_prices[var2.get()]))
self.label8.grid(row=row_counter, column=3)
row_counter += 1
root = Tk()
my_gui = pricingDoc(root)
root.mainloop()