鱼C论坛

 找回密码
 立即注册
查看: 1963|回复: 2

求助:这个总是显示0怎么办啊

[复制链接]
发表于 2019-10-15 12:34:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. from tkinter import *


  2. symbol = ['+', '-', 'x', '/']


  3. def main(v):

  4.     root = Tk()

  5.     frame = Frame(root)
  6.     frame.pack(padx=10, pady=10)

  7.     l1 = Label(frame, text=symbol[v - 1])
  8.     l2 = Label(frame, text='=')
  9.     l1.grid(row=0, column=1)
  10.     l2.grid(row=0, column=3)

  11.     v1 = IntVar()
  12.     v2 = IntVar()
  13.     v3 = IntVar()

  14.     def test(content):
  15.         return content.isdigit()

  16.     testCMD = root.register(test)

  17.     e1 = Entry(frame, textvariable=v1, validate='key', validatecommand=(testCMD, '%P'), width=10)
  18.     e2 = Entry(frame, textvariable=v2, validate='key', validatecommand=(testCMD, '%P'), width=10)
  19.     e3 = Entry(frame, textvariable=v3, state='readonly', width=10)
  20.     e1.grid(row=0, column=0)
  21.     e2.grid(row=0, column=2)
  22.     e3.grid(row=0, column=4)

  23.     def add():
  24.         result = int(v1.get()) + int(v2.get())
  25.         v3.set(str(result))
  26.         print(v1.get())
  27.         print(v2.get())
  28.         print(v3.get())

  29.     def reduce():
  30.         result = int(v1.get()) - int(v2.get())
  31.         v3.set(str(result))

  32.     def multiply():
  33.         result = int(v1.get()) * int(v2.get())
  34.         v3.set(str(result))

  35.     def division():
  36.         result = int(v1.get()) / int(v2.get())
  37.         v3.set(str(result))

  38.     if v == 1:
  39.         compute = add
  40.     elif v == 2:
  41.         compute = reduce
  42.     elif v == 3:
  43.         compute = multiply
  44.     elif v == 4:
  45.         compute = division

  46.     b1 = Button(frame, text='确定', command=compute, width=10)
  47.     b2 = Button(frame, text='退出', command=root.quit, width=10)
  48.     b1.grid(row=1, column=0, sticky=W, padx=5)
  49.     b2.grid(row=1, column=4, sticky=E, pady=5)

  50.     mainloop()


  51. def start():
  52.     lap = Tk()

  53.     def count():
  54.         q = int(v.get())
  55.         print(type(q))
  56.         main(q)

  57.     frame = LabelFrame(lap, text='请选择计算种类:')
  58.     frame.pack(padx=15, pady=15)

  59.     list1 = [('加法计算', 1), ('减法计算', 2), ('乘法计算', 3), ('除法计算', 4)]
  60.     v = IntVar()

  61.     for each, num in list1:
  62.         rb = Radiobutton(frame, text=each, variable=v, value=num, indicatoron=FALSE, command=count)
  63.         rb.pack(fill=X)

  64.     mainloop()


  65. start()
复制代码



无论输入什么数,它的v1.get(),v2.get(),和v3.get()都是0

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-10-15 14:45:45 | 显示全部楼层
  def add():
        result = int(e1.get()) + int(e2.get())
        e3.insert(0, str(result))
        print(e1.get())
        print(e2.get())
        print(e3.get())
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-15 14:53:50 | 显示全部楼层
  1.     def add():
  2.         result = int(e1.get()) + int(e2.get())
  3.         e3["state"]='normal'
  4.         e3.insert(0, str(result))
  5.         e3["state"] ='readonly'
  6.         print(e1.get())
  7.         print(e2.get())
  8.         print(e3.get())
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-20 00:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表