アットウィキロゴ

python - 電卓

  1. # -*- coding: utf-8 -*-
  2. from Tkinter import *
  3. import Tkinter as tk
  4.  
  5.  
  6. ##############################################################################
  7. #フレーム
  8. class Use_Frame(tk.Frame):
  9. def __init__(self, master=None):
  10. tk.Frame.__init__(self, master)
  11. self.grid(column=0, row=0)
  12.  
  13.  
  14. ##############################################################################
  15. #ボタン
  16. class Use_Button(tk.Button):
  17. def __init__(self, master=None):
  18. tk.Button.__init__(self, master)
  19.  
  20. self["height"] = 3
  21. self["width"] = 6
  22. self["font"] = ("Helvetica", 15)
  23. self["command"] = self.input_exe
  24.  
  25. def input_exe(self):
  26. Label.push_list.append(self["text"])
  27.  
  28. if self["text"] == "=":
  29. self.cal()
  30. Label.push_list = []
  31.  
  32. elif self["text"] == "C":
  33. Label.push_list = []
  34. Label.Display()
  35.  
  36. else:
  37. Label.Display()
  38.  
  39. def cal(self):
  40. result = eval(Label.display_item)
  41. Label.push_list.append(str(result))
  42. Label.Display()
  43.  
  44. ##############################################################################
  45. #ラベル
  46. class Use_Label(tk.Label):
  47. def __init__(self, master=None):
  48. tk.Label.__init__(self, master)
  49.  
  50. self["font"] = ("Helvetica", 20)
  51. self["width"] = 20
  52. self["anchor"] = "e"
  53.  
  54. self.push_list = []
  55.  
  56. def Display(self):
  57. self.display_item = "".join(self.push_list)
  58. self["text"] = self.display_item
  59.  
  60. ##############################################################################
  61.  
  62. root = Tk()
  63. root.title("計算機")
  64.  
  65.  
  66. Main = Use_Frame(root)
  67. Main.grid(column=0, row=1)
  68.  
  69. ##############################################################################
  70. #ボタンの作成、1から9まではfor文で、0と各種演算子は別に作成
  71. Button_number = 9
  72.  
  73. for Button_num in range(Button_number):
  74. Button = Use_Button(Main)
  75.  
  76. yoko = Button_num % 3
  77. tate = Button_num // 3 + 1
  78.  
  79. Button.grid(column=yoko, row=tate)
  80. Button["text"] = "{0}".format(Button_num + 1)
  81.  
  82. Button_0 = Use_Button(Main)
  83. Button_0.grid(column=1, row=4)
  84. Button_0["text"] = "0"
  85.  
  86. Button_plus = Use_Button(Main)
  87. Button_plus.grid(column=3, row=3)
  88. Button_plus["text"] = "+"
  89.  
  90. Button_minus = Use_Button(Main)
  91. Button_minus.grid(column=4, row=3)
  92. Button_minus["text"] = "-"
  93.  
  94. Button_multi = Use_Button(Main)
  95. Button_multi.grid(column=3, row=2)
  96. Button_multi["text"] = "*"
  97.  
  98. Button_div = Use_Button(Main)
  99. Button_div.grid(column=4, row=2)
  100. Button_div["text"] = "/"
  101.  
  102. Button_eqa = Use_Button(Main)
  103. Button_eqa.grid(column=4, row=4)
  104. Button_eqa["text"] = "="
  105.  
  106. Button_point = Use_Button(Main)
  107. Button_point.grid(column=2, row=4)
  108. Button_point["text"] = "."
  109.  
  110. Button_clear = Use_Button(Main)
  111. Button_clear.grid(column=4, row=1)
  112. Button_clear["text"] = "C"
  113.  
  114. Sub = Use_Frame(root)
  115. Sub.grid(column=0, row=0)
  116.  
  117. Label = Use_Label(Sub)
  118. Label.grid(column=0,row=0)
  119.  
  120. root.mainloop()
  121.  
最終更新:2018年03月01日 16:02