python - 我的 GUI 程序代码通过单击提交按钮显示结果有什么问题吗?
问题描述
import tkinter
class longdis:
def __init__(self):
self.main = tkinter.Tk()
self.top = tkinter.Frame(self.main)
self.mid = tkinter.Frame(self.main)
self.mid1 = tkinter.Frame(self.main)
self.bot = tkinter.Frame(self.main)
self.top.pack()
self.mid.pack()
self.mid1.pack()
self.bot.pack()
self.radiov = tkinter.IntVar()
self.radiov.set(1)
self.radio1 = tkinter.Radiobutton(self.mid, text = 'Daytime (6:00 a.m. through 5:59 p.m.)', variable = self.radiov, value = 0.07)
self.radio2 = tkinter.Radiobutton(self.mid, text = 'Evening (6:00 p.m. through 11:59 p.m.)', variable = self.radiov, value = 0.12)
self.radio3 = tkinter.Radiobutton(self.mid, text = 'Off-Peak (midnight through 5:59 a.m.)', variable = self.radiov, value = 0.05)
self.radio1.pack()
self.radio2.pack()
self.radio3.pack()
self.title = tkinter.Label(self.top, text ='Rate Catergory')
self.title2 = tkinter.Label(self.top, text ='Rate Per Minute')
self.value = tkinter.StringVar()
self.label1 = tkinter.Label(self.mid1, textvariable = self.value)
self.label1.pack()
self.title.pack(side = 'left')
self.title2.pack(side ='left')
self.enter = tkinter.Entry(self.mid1, text = 'please enter how many minutes: ', width = 2)
self.enter.pack()
self.submit = tkinter.Button(self.bot, text ='submit', command = self.cbfunction )
self.quit = tkinter.Button(self.bot, text = 'close', command = self.main.destroy)
self.submit.pack(side = 'left')
self.quit.pack(side = 'left')
def cbfunction(self):
t = float(self.enter.get())
s = float(self.radiov.get())
result = t*s
self.value.set(result)
g = longdis()
正如您在上面看到的我的代码和图像,我使用提交按钮获得结果的 0。我不知道发生了什么,我的代码有什么问题,谁能帮助我?我将不胜感激。
解决方案
有一些变化,看评论。也self.radiov
应该提供整数值而不是浮动的...variable = self.radiov, value = 0.7
import tkinter
class longdis:
def __init__(self):
self.main = tkinter.Tk()
self.top = tkinter.Frame(self.main)
self.mid = tkinter.Frame(self.main)
self.mid1 = tkinter.Frame(self.main)
self.bot = tkinter.Frame(self.main)
self.top.pack()
self.mid.pack()
self.mid1.pack()
self.bot.pack()
self.radiov = tkinter.IntVar()
self.radiov.set(0) # initialize it to 0 i.e. fist radio button
self.radio1 = tkinter.Radiobutton(self.mid, text = 'Daytime (6:00 a.m. through 5:59 p.m.)', variable = self.radiov, value = 0)
self.radio2 = tkinter.Radiobutton(self.mid, text = 'Evening (6:00 p.m. through 11:59 p.m.)', variable = self.radiov, value = 1)
self.radio3 = tkinter.Radiobutton(self.mid, text = 'Off-Peak (midnight through 5:59 a.m.)', variable = self.radiov, value = 2)
self.radio1.pack()
self.radio2.pack()
self.radio3.pack()
self.title = tkinter.Label(self.top, text ='Rate Catergory')
self.title2 = tkinter.Label(self.top, text ='\tRate Per Minute')
self.value = tkinter.StringVar()
self.label1 = tkinter.Label(self.mid1, textvariable = self.value)
self.label1.pack()
self.title.pack(side = 'left')
self.title2.pack(side ='left')
self.enter = tkinter.Entry(self.mid1, width = 10)
self.enterlabel = tkinter.Label(self.mid1, text = 'please enter how many minutes: ')
self.enterlabel.pack(side ='left')
self.enter.pack(side ='left')
self.submit = tkinter.Button(self.bot, text = 'submit', command = self.calculate_result)
self.submit.pack(side = 'left')
self.quit = tkinter.Button(self.bot, text = 'close', command = self.main.destroy)
self.quit.pack(side = 'right')
def calculate_result(self): # handles the submit method
button_index = self.radiov.get()
# depending on radio button calculate result
if(button_index == 0):
self.cbfunction1()
if(button_index == 1):
self.cbfunction2()
if(button_index == 2):
self.cbfunction3()
def cbfunction1(self):
t = float(self.enter.get())
s = 0.07
result = t*s
self.value.set(result)
def cbfunction2(self):
t = float(self.enter.get())
s = 0.12
result = t*s
self.value.set(result)
def cbfunction3(self):
t = float(self.enter.get())
s = 0.05
result = t*s
self.value.set(result)
g = longdis()
tkinter.mainloop()
推荐阅读
- android - 使用基于火的推送通知清除系统托盘上的通知
- amazon-cloudformation - 将子网列表作为参数传递给嵌套 CloudFormation 模板失败并出现错误
- polymer - 组件类中的纸质对话框句柄 onclose
- anaconda - 使用 Rcpp 包的 Jupyter Notebook 的 C++ 编译器问题
- prolog - 如何在 Prolog 中使用“-”构造函数?
- c++ - 将坐标传输到 Qt 中的对话框
- sorting - 如何根据增加的 posn-x 值和 posn-y 值订购 posn?
- memory-leaks - Tomcat JVM 中 ParallelWebAppClassLoaders 的多个实例保留对象的行为
- django - 如何接收基本模板 django 的上下文?
- excel - 如何让 VBA 类代码仅在对象的一个实例上执行?