鱼C论坛

 找回密码
 立即注册
查看: 1251|回复: 1

关于类与tkinter

[复制链接]
发表于 2018-2-15 13:04:11 | 显示全部楼层 |阅读模式

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

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

x
本人写了一个人第二窗口的计算器,可是不知怎么实用类,导致报错。第一段是需要修改的,第二段是源代码。
  1. class open():
  2.     def __init__(self,root,s1,s2,s3,e1,e2,e3,bx,b_10,b_12,bx1,bx2,bx3,bx4):
  3.         self.root = root
  4.         self.s1 = s1
  5.         self.s2 = s2
  6.         self.s3 = s3
  7.         self.root.title('计算器')
  8.         self.e1 = e1
  9.         self.e2 = e2
  10.         self.e3 = e3
  11.         self.bx = bx
  12.         self.b_10 = b_10
  13.         self.b_12 = b_12
  14.         self.bx1 = bx1
  15.         self.bx2 = bx2
  16.         self.bx3 = bx3
  17.         self.bx4 = bx4

  18.         testCMD = self.root.register(test)
  19.         self.e1 = Entry(self.root, width=8, highlightthickness=10, textvariable=s1, validate="key")
  20.         self.e1.grid(row=0, column=0)

  21.         self.e2 = Entry(self.root, width=8, highlightthickness=10, textvariable=s2, validate="key")
  22.         self.e2.grid(row=0, column=1)

  23.         self.e3 = Entry(self.root, width=8, highlightthickness=10, textvariable=s3, state="readonly")
  24.         self.e3.grid(row=0, column=3)

  25.         self.bx = Button(self.root, text='使用说明', command=bxr, padx=30, pady=10)
  26.         self.bx.grid(row=3, columnspan=4, pady=20)

  27.         self.b_10 = Button(self.root, text='清除', padx=20, pady=20, command=no)
  28.         self.b_10.grid(row=4, columnspan=4, pady=20)

  29.         self.b_12 = Label(self.root, text='=', padx=20, pady=20)
  30.         self.b_12.grid(row=0, column=2)

  31.         self.bx1 = Button(self.root, text='+', padx=20, pady=20, command=add)
  32.         self.bx1.grid(row=1, column=0)

  33.         self.bx2 = Button(self.root, text='-', padx=20, pady=20, command=dels)
  34.         self.bx2.grid(row=1, column=1)

  35.         self.bx3 = Button(self.root, text='*', padx=20, pady=20, command=multiply)
  36.         self.bx3.grid(row=1, column=2)

  37.         self.bx4 = Button(self.root, text='/', padx=20, pady=20, command=divide)
  38.         self.bx4.grid(row=1, column=3)




  39.     def test(content):
  40.         return content.isdigit()





  41.     def bxr():
  42.         top = Toplevel()
  43.         top.title('使用说明')

  44.         msg = Message(top, text='本计算器输入数字后,再点击符号,即可得到结果')
  45.         msg.pack()



  46.     def no():
  47.         global e1,e2,e3
  48.         e1.delete(0, END)
  49.         e2.delete(0, END)
  50.         e3.delete(0, END)





  51.     # 符号

  52.     def add():
  53.         global s1
  54.         global s2
  55.         global s3
  56.         global result
  57.         result = int(s1.get()) + int(s2.get())
  58.         s3.set(str(result))



  59.     def dels():
  60.         result = int(s1.get()) - int(s2.get())
  61.         s3.set(str(result))



  62.     def multiply():
  63.         result = int(s1.get()) * int(s2.get())
  64.         s3.set(str(result))



  65.     def divide():
  66.         if int(s2.get()) == 0:
  67.             s3.set('错误!')
  68.         else:
  69.             result = int(s1.get()) / int(s2.get())
  70.             s3.set(str(result))




  71. b11 = Button(f1,text='计算器(辅助)',padx=10,pady=10,command=open.__init__)
  72. b11.grid(row=4,columnspan=5)
复制代码

第二段:
  1. from tkinter import *


  2. root = Tk()

  3. root.title('计算器')


  4. s1 = StringVar()
  5. s2 = StringVar()
  6. s3 = StringVar()

  7. def test(content):
  8.     return content.isdigit()
  9.         
  10. testCMD = root.register(test)

  11. e1 = Entry(root,width=8,highlightthickness=10,textvariable=s1,validate="key")
  12. e1.grid(row=0,column=0)

  13. e2 = Entry(root,width=8,highlightthickness=10,textvariable=s2,validate="key")
  14. e2.grid(row=0,column=1)

  15. e3 = Entry(root,width=8,highlightthickness=10,textvariable=s3,state="readonly")
  16. e3.grid(row=0,column=3)

  17. def bxr():
  18.     top = Toplevel()
  19.     top.title('使用说明')

  20.     msg = Message(top,text='本计算器输入数字后,再点击符号,即可得到结果')
  21.     msg.pack()

  22. bx = Button(root,text='使用说明',command=bxr,padx=30,pady=10)
  23. bx.grid(row=3,columnspan=4,pady=20)

  24. def no():
  25.     e1.delete(0,END)
  26.     e2.delete(0,END)
  27.     e3.delete(0,END)

  28. b_10 = Button(root,text='清除',padx=20,pady=20,command=no)
  29. b_10.grid(row=4,columnspan=4,pady=20)


  30. b_12 = Label(root,text='=',padx=20,pady=20)
  31. b_12.grid(row=0,column=2)

  32. #符号

  33. def add():
  34.     result = int(s1.get()) + int(s2.get())
  35.     s3.set(str(result))
  36.    

  37. bx1 = Button(root,text='+',padx=20,pady=20,command=add)
  38. bx1.grid(row=1,column=0)

  39. def dels():
  40.     result = int(s1.get()) - int(s2.get())
  41.     s3.set(str(result))

  42. bx2 = Button(root,text='-',padx=20,pady=20,command=dels)
  43. bx2.grid(row=1,column=1)

  44. def multiply():
  45.     result = int(s1.get()) * int(s2.get())
  46.     s3.set(str(result))
  47.    

  48. bx3 = Button(root,text='*',padx=20,pady=20,command=multiply)
  49. bx3.grid(row=1,column=2)

  50. def divide():
  51.     if int(s2.get()) == 0:
  52.         s3.set('错误!')
  53.     else:
  54.         result = int(s1.get()) / int(s2.get())
  55.         s3.set(str(result))

  56. bx4 = Button(root,text='/',padx=20,pady=20,command=divide)
  57. bx4.grid(row=1,column=3)


  58. mainloop()
复制代码

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

使用道具 举报

 楼主| 发表于 2018-2-15 15:42:39 | 显示全部楼层
  1. from tkinter import *
  2. from tkinter import colorchooser

  3. doot = Tk()
  4. #默认
  5. color = 'black'

  6. f1 = Frame(doot)
  7. f1.pack(padx=50,pady=50)

  8. w = Canvas(f1,width=600,height=400)
  9. w.grid(row=0,columnspan=5)


  10. def paint(event):
  11.     x1,y1 = (event.x - 5),(event.y - 5)
  12.     x2,y2 = (event.x + 5),(event.y + 5)
  13.     global color
  14.     w.create_oval(x1,y1,x2,y2,fill=color)

  15. w.bind("<B1-Motion>",paint)


  16. Label(f1,text='按住鼠标左键并移动,开始绘制你的理想蓝图吧......',\
  17.       font=('楷体',20)).grid(row=3,columnspan=5)


  18. def red():
  19.     global color
  20.     color = 'red'

  21. b1 = Button(f1,text='红',command=red,padx=20,pady=20)
  22. b1.grid(row=1,column=0)


  23. def blue():
  24.     global color
  25.     color = 'blue'

  26. b2 = Button(f1,text='蓝',command=blue,padx=20,pady=20)
  27. b2.grid(row=1,column=1)


  28. def green():
  29.     global color
  30.     color = 'green'

  31. b3 = Button(f1,text='绿',command=green,padx=20,pady=20)
  32. b3.grid(row=1,column=2)


  33. def pink():
  34.     global color
  35.     color = 'pink'

  36. b4 = Button(f1,text='粉',command=pink,padx=20,pady=20)
  37. b4.grid(row=1,column=3)



  38. def purple():
  39.     global color
  40.     color = 'purple'

  41. b5 = Button(f1,text='紫',command=purple,padx=20,pady=20)
  42. b5.grid(row=1,column=4)



  43. def yellow():
  44.     global color
  45.     color = 'yellow'

  46. b6 = Button(f1,text='黄',command=yellow,padx=20,pady=20)
  47. b6.grid(row=2,column=0)

  48. def white():
  49.     global color
  50.     color = 'white'

  51. b7 = Button(f1,text='白',command=white,padx=20,pady=20)
  52. b7.grid(row=2,column=1)

  53. def black():
  54.     global color
  55.     color = 'black'

  56. b8 = Button(f1,text='黑',command=black,padx=20,pady=20)
  57. b8.grid(row=2,column=2)

  58. def orange():
  59.     global color
  60.     color = 'orange'

  61. b9 = Button(f1,text='橙',command=orange,padx=20,pady=20)
  62. b9.grid(row=2,column=3)

  63. def gray():
  64.     global color
  65.     color = 'gray'

  66. b10 = Button(f1,text='灰',command=gray,padx=20,pady=20)
  67. b10.grid(row=2,column=4)
  68. #局外定义
  69. s1 = StringVar()
  70. s2 = StringVar()
  71. s3 = StringVar()
  72. result = 0

  73. def open():
  74.     root = Tk()

  75.     root.title('计算器')

  76.     s1 = StringVar()
  77.     s2 = StringVar()
  78.     s3 = StringVar()

  79.     def test(content):
  80.         return content.isdigit()

  81.     testCMD = root.register(test)

  82.     e1 = Entry(root, width=8, highlightthickness=10, textvariable=s1, validate="key")
  83.     e1.grid(row=0, column=0)

  84.     e2 = Entry(root, width=8, highlightthickness=10, textvariable=s2, validate="key")
  85.     e2.grid(row=0, column=1)

  86.     e3 = Entry(root, width=8, highlightthickness=10, textvariable=s3, state="readonly")
  87.     e3.grid(row=0, column=3)

  88.     def bxr():
  89.         top = Toplevel()
  90.         top.title('使用说明')

  91.         msg = Message(top, text='本计算器输入数字后,再点击符号,即可得到结果')
  92.         msg.pack()

  93.     bx = Button(root, text='使用说明', command=bxr, padx=30, pady=10)
  94.     bx.grid(row=3, columnspan=4, pady=20)

  95.     def no():
  96.         e1.delete(0, END)
  97.         e2.delete(0, END)
  98.         e3.delete(0, END)

  99.     b_10 = Button(root, text='清除', padx=20, pady=20, command=no)
  100.     b_10.grid(row=4, columnspan=4, pady=20)

  101.     b_12 = Label(root, text='=', padx=20, pady=20)
  102.     b_12.grid(row=0, column=2)

  103.     # 符号

  104.     def add(result):
  105.         result = int(s1.get()) + int(s2.get())
  106.         s3.set(str(result))

  107.     bx1 = Button(root, text='+', padx=20, pady=20, command=add)
  108.     bx1.grid(row=1, column=0)

  109.     def dels():
  110.         result = int(s1.get()) - int(s2.get())
  111.         s3.set(str(result))

  112.     bx2 = Button(root, text='-', padx=20, pady=20, command=dels)
  113.     bx2.grid(row=1, column=1)

  114.     def multiply():
  115.         result = int(s1.get()) * int(s2.get())
  116.         s3.set(str(result))

  117.     bx3 = Button(root, text='*', padx=20, pady=20, command=multiply)
  118.     bx3.grid(row=1, column=2)

  119.     def divide():
  120.         if int(s2.get()) == 0:
  121.             s3.set('错误!')
  122.         else:
  123.             result = int(s1.get()) / int(s2.get())
  124.             s3.set(str(result))

  125.     bx4 = Button(root, text='/', padx=20, pady=20, command=divide)
  126.     bx4.grid(row=1, column=3)


  127. b11 = Button(f1,text='计算器(辅助)',padx=10,pady=10,command=open)
  128. b11.grid(row=4,columnspan=5)

  129. mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-28 01:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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