|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 zltzlt 于 2019-10-14 21:22 编辑
- from tkinter import *
- class Calculator:
- def __init__(self):
- self.symbol = ['+', '-', 'x', '/']
- def add(self):
- result = int(v1.get()) + int(v2.get())
- v3.set(str(result))
- def reduce(self):
- result = int(v1.get()) - int(v2.get())
- v3.set(str(result))
- def multiply(self):
- result = int(v1.get()) * int(v2.get())
- v3.set(str(result))
- def division(self):
- result = int(v1.get()) / int(v2.get())
- v3.set(str(result))
- def main(v):
- cal = Calculator()
- if v == 1:
- q = 0
- compute = cal.add
- elif v == 2:
- q = 1
- compute = cal.reduce
- elif v == 3:
- q = 2
- compute = cal.multiply
- elif v == 4:
- q = 3
- compute = cal.division
- root = Tk()
- frame = Frame(root)
- frame.pack(padx=10, pady=10)
- l1 = Label(frame, text=cal.symbol[q])
- l2 = Label(frame, text='=')
- l1.grid(row=0, column=1)
- l2.grid(row=0, column=3)
- v1 = StringVar()
- v2 = StringVar()
- v3 = StringVar()
- def test(content):
- return content.isdigit()
- testCMD = root.register(test)
- e1 = Entry(frame, textvariable=v1, validate='key', validatecommand=(testCMD, '%P'), width=10)
- e2 = Entry(frame, textvariable=v2, validate='key', validatecommand=(testCMD, '%P'), width=10)
- e3 = Entry(frame, textvariable=v3, state='readonly', width=10)
- e1.grid(row=0, column=0)
- e2.grid(row=0, column=2)
- e3.grid(row=0, column=4)
- b1 = Button(frame, text='确定', command=compute, width=10)
- b2 = Button(frame, text='退出', command=root.quit, width=10)
- b1.grid(row=1, column=0, sticky=W, padx=5)
- b2.grid(row=1, column=4, sticky=E, pady=5)
- mainloop()
- def start():
- lap = Tk()
- def count():
- main(v)
- frame = LabelFrame(lap, text='请选择计算种类:')
- frame.pack(padx=15, pady=15)
- list1 = [('加法计算', 1), ('减法计算', 2), ('乘法计算', 3), ('除法计算', 4)]
- v = StringVar()
- for each, num in list1:
- rb = Radiobutton(frame, text=each, variable=v, value=num, indicatoron=FALSE, command=count)
- rb.pack(fill=X)
- mainloop()
- start()
复制代码
最后是显示这个错误
- Exception in Tkinter callback
- Traceback (most recent call last):
- File "C:\Program Files\Python36\lib\tkinter\__init__.py", line 1699, in __call__
- return self.func(*args)
- File "D:/tk7.py", line 79, in count
- main(v)
- File "D:/tk7.py", line 46, in main
- l1 = Label(frame, text=cal.symbol[q])
- UnboundLocalError: local variable 'q' referenced before assignment
复制代码 |
|