0
我试图要求用户输入一个数字(在本例中,他们需要输入minEntry
框的分钟数) 。我想取这个数字,并用它来设置多个变量值,将这个数值乘以其他数字。然后我想取这个值,并将其显示在__init__
函数中的sublabel
框中。我得到一个错误消息,说'PageSix' object has no attribute 'peak_rate'
。我有点知道这意味着什么,但我不知道如何解决它。使用输入框设置变量的值并使用Tkinter在标签中显示它
class PageSix(tk.Frame):
def projected_figures(self):
global minEntry
tariff = self.controller.page_get(PageTwo)
minutes=minEntry.get()
self.peak_rate = tk.StringVar()
self.peak_rate.set(0)
self.off_peak = tk.StringVar()
self.off_peak.set(0)
self.line_rental = tk.StringVar()
self.line_rental.set(0)
if tariff.current_tariff == "A":
self.peak_rate.set("Peak Rate: £"+minutes*0.3)
self.off_peak.set("Off-Peak: £"+minutes*0.05)
self.line_rental.set("Line Rental: £15")
elif tariff.current_tariff == "B":
self.peak_rate.set("Peak Rate: £"+minutes*0.1)
self.off_peak.set("Off-Peak: £"+minutes*0.02)
self.line_rental.set("Line Rental: £20")
else:
self.peak_rate.set("Peak Rate: £"+minutes*0.9)
self.off_peak.set("Off-Peak: -")
self.line_rental.set("Line Rental: £30")
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller=controller
label = tk.Label(self, text="Account Balance", font=LARGE_FONT)
label.pack(pady=10,padx=10)
sublabel = tk.Label(self, textvariable=self.peak_rate, font=SMALL_FONT)
sublabel.pack(pady=10,padx=10)
sublabel2 = tk.Label(self, textvariable=self.off_peak, font=SMALL_FONT)
sublabel2.pack(pady=10,padx=10)
sublabel3 = tk.Label(self, textvariable=self.line_rental, font=SMALL_FONT)
sublabel3.pack(pady=10,padx=10)
minLabel = Label(self, text = 'Enter Minutes: ')
minEntry = Entry(self)
minLabel.pack(pady =10, padx = 10, side = TOP, anchor = S)
minEntry.pack(pady =10, padx = 10, side = TOP, anchor = S)
button1 = tk.Button(self, text="View Projected Figures",
command=self.projected_figures)
button1.pack()
button2 = tk.Button(self, text="Back to Menu",
command=lambda: controller.show_frame(StartPage))
button2.pack()
另外的线tariff = self.controller.get_page(PageTwo)
和if self.current_tariff == "x"
指的是这个类,如果它可以是任何使用的。
class PageTwo(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller=controller
self.current_tariff = tk.StringVar()
self.current_tariff.set("A")
label = tk.Label(self, text="Current Tariff", font=LARGE_FONT)
label.pack(pady=10,padx=10)
sublabel = tk.Label(self, textvariable=self.current_tariff, font=SMALL_FONT)
sublabel.pack(pady=10,padx=10)
button1 = tk.Button(self, text="Change Tariff",
command=lambda: controller.show_frame(PageSix))
button1.pack()
button2 = tk.Button(self, text="Projected Figures",
command=lambda: controller.show_frame(PageSix))
button2.pack()
button3 = tk.Button(self, text="Back to Home",
command=lambda: controller.show_frame(StartPage))
button3.pack()