hp.py 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. from PyQt5 import QtWidgets
  2. from PyQt5.QtWidgets import QMessageBox
  3. from aylinuxhp import Ui_MainWindow
  4. class Aylinuxhp(QtWidgets.QMainWindow,Ui_MainWindow):
  5. ilksayi=None
  6. ikincisayi=False
  7. def __init__(self):
  8. super().__init__()
  9. self.setupUi(self)
  10. self.show()
  11. # rakam butonu işlemleri
  12. self.buton0.clicked.connect(self.rakama_bas)
  13. self.buton1.clicked.connect(self.rakama_bas)
  14. self.buton2.clicked.connect(self.rakama_bas)
  15. self.buton3.clicked.connect(self.rakama_bas)
  16. self.buton4.clicked.connect(self.rakama_bas)
  17. self.buton5.clicked.connect(self.rakama_bas)
  18. self.buton6.clicked.connect(self.rakama_bas)
  19. self.buton7.clicked.connect(self.rakama_bas)
  20. self.buton8.clicked.connect(self.rakama_bas)
  21. self.buton9.clicked.connect(self.rakama_bas)
  22. self.ikisifir.clicked.connect(self.rakama_bas)
  23. self.ucsifir.clicked.connect(self.rakama_bas)
  24. self.pi.clicked.connect(self.pi_bas)
  25. # nokta butonu işlemleri
  26. self.nokta.clicked.connect(self.nokta_bas)
  27. # artı/eksi, yüzde, karekök butonu işlemleri
  28. self.eksiarti.clicked.connect(self.yuzde_artieksi)
  29. # self.yuzde.clicked.connect(self.yuzde_artieksi)
  30. self.karekok.clicked.connect(self.yuzde_artieksi)
  31. # işlem butonu işlemleri
  32. self.topla.clicked.connect(self.islemler)
  33. self.cikar.clicked.connect(self.islemler)
  34. self.bolme.clicked.connect(self.islemler)
  35. self.carp.clicked.connect(self.islemler)
  36. self.kuvvet.clicked.connect(self.islemler)
  37. self.yuzde.clicked.connect(self.islemler)
  38. self.topla.setCheckable(True)
  39. self.cikar.setCheckable(True)
  40. self.bolme.setCheckable(True)
  41. self.carp.setCheckable(True)
  42. self.kuvvet.setCheckable(True)
  43. self.yuzde.setCheckable(True)
  44. # eşittir butonu işlemleri
  45. self.esittir.clicked.connect(self.islemsonuc)
  46. self.esittir.setCheckable(True)
  47. # C butonu işlemleri
  48. self.butonc.clicked.connect(self.temizle)
  49. # Silme <= butonu işlemleri
  50. self.geri.clicked.connect(self.gerigit)
  51. # Bilgi butonu işlemleri
  52. self.bilgi.clicked.connect(self.bilgiver)
  53. def rakama_bas(self):
  54. buton = self.sender()
  55. if ((self.ikincisayi) and (self.esittir.isChecked())):
  56. self.sonuc.setText(format(float(buton.text()),'.15g'))
  57. self.ikincisayi = True
  58. self.esittir.setChecked(False)
  59. elif ((self.topla.isChecked() or self.cikar.isChecked() or self.yuzde.isChecked() or self.kuvvet.isChecked() or self.bolme.isChecked() or self.carp.isChecked()) and (not self.ikincisayi)):
  60. self.sonuc.setText(format(float(buton.text()),'.15g'))
  61. self.ikincisayi = True
  62. else:
  63. if (('.' in self.sonuc.text()) and buton.text()== "0"):
  64. self.sonuc.setText(format(float(self.sonuc.text() + buton.text()),'.15'))
  65. else:
  66. self.sonuc.setText(format(float(self.sonuc.text() + buton.text()),'.15g'))
  67. def nokta_bas(self):
  68. # nokta varsa artık basma
  69. if ('.' in self.sonuc.text()):
  70. self.sonuc.setText(self.sonuc.text())
  71. else:
  72. self.sonuc.setText(self.sonuc.text()+".")
  73. def yuzde_artieksi(self):
  74. buton = self.sender()
  75. deger = float(self.sonuc.text())
  76. if buton.text()=="-/+":
  77. deger=deger * -1
  78. elif buton.text()=="√¯":
  79. deger=deger ** 0.5
  80. else:
  81. deger=deger * 0.01
  82. self.sonuc.setText(format(deger,'.15g'))
  83. def islemler(self):
  84. buton = self.sender()
  85. self.ilksayi = float(self.sonuc.text())
  86. self.bolme.setChecked(False)
  87. self.topla.setChecked(False)
  88. self.cikar.setChecked(False)
  89. self.kuvvet.setChecked(False)
  90. self.yuzde.setChecked(False)
  91. self.carp.setChecked(False)
  92. buton.setChecked(True)
  93. def islemsonuc(self):
  94. yenideger=""
  95. if self.esittir.isChecked()== True or yenideger=="" :
  96. if self.ilksayi == None or self.esittir.isChecked()== False :
  97. buton = self.sender()
  98. buton.setChecked(False)
  99. ikincideger = float(self.sonuc.text())
  100. else:
  101. ikincideger = float(self.sonuc.text())
  102. if self.topla.isChecked():
  103. yenideger = self.ilksayi + ikincideger
  104. self.sonuc.setText(format(yenideger, '.15g'))
  105. self.topla.setChecked(False)
  106. elif self.carp.isChecked():
  107. yenideger = self.ilksayi * ikincideger
  108. self.sonuc.setText(format(yenideger, '.15g'))
  109. self.carp.setChecked(False)
  110. elif self.cikar.isChecked():
  111. yenideger = self.ilksayi - ikincideger
  112. self.sonuc.setText(format(yenideger, '.15g'))
  113. self.cikar.setChecked(False)
  114. elif self.bolme.isChecked():
  115. try:
  116. yenideger = self.ilksayi / ikincideger
  117. self.sonuc.setText(format(yenideger, '.15g'))
  118. self.bolme.setChecked(False)
  119. except ZeroDivisionError:
  120. print("Bir sayıyı 0'a bölemezsiniz!")
  121. elif self.kuvvet.isChecked():
  122. yenideger = self.ilksayi ** ikincideger
  123. self.sonuc.setText(format(yenideger, '.15g'))
  124. self.kuvvet.setChecked(False)
  125. elif self.yuzde.isChecked():
  126. yenideger = self.ilksayi * ikincideger / 100
  127. self.sonuc.setText(format(yenideger, '.15g'))
  128. self.yuzde.setChecked(False)
  129. if ikincideger != 0.0:
  130. if ikincideger == 0 :
  131. self.msgBox = QMessageBox(self)
  132. self.msgBox.setWindowTitle("Aylinux Hesap Makinesi")
  133. self.msgBox.setIcon(QMessageBox.Warning)
  134. self.msgBox.addButton("Tamam", QMessageBox.ActionRole)
  135. self.msgBox.setText("Bir sayıyı 0'a bölemezsiniz! \nLütfen bölmek istediğiniz sayıyı tekrar girin.")
  136. self.msgBox.show()
  137. else:
  138. self.ilksayi = yenideger
  139. self.esittir.setChecked(True)
  140. else:
  141. print("İşlem yapmak için önce sayı girmelisiniz! \nLütfen bir sayı girin.")
  142. else:
  143. print("İşlem yapmak için önce sayı girmelisiniz! \nLütfen bir sayı girin.")
  144. def temizle(self):
  145. self.ilksayi = 0
  146. self.ikincisayi = False
  147. self.sonuc.setText("0")
  148. self.bolme.setChecked(False)
  149. self.topla.setChecked(False)
  150. self.cikar.setChecked(False)
  151. self.kuvvet.setChecked(False)
  152. self.yuzde.setChecked(False)
  153. self.carp.setChecked(False)
  154. self.esittir.setChecked(False)
  155. def gerigit(self):
  156. if len(self.sonuc.text()) != 1:
  157. self.sonuc.setText(self.sonuc.text()[0:-1]) # Son girilen rakamı siler
  158. print(len(self.sonuc.text()))
  159. else:
  160. self.sonuc.setText("0")
  161. def pi_bas(self):
  162. self.sonuc.setText("3.14")
  163. def bilgiver(self):
  164. self.msgBox = QMessageBox(self)
  165. self.msgBox.setWindowTitle("Aylinux Hesap Makinesi")
  166. self.msgBox.setIcon(QMessageBox.Warning)
  167. self.msgBox.addButton("Tamam", QMessageBox.ActionRole)
  168. self.msgBox.setText("Aylinux Hesap Makinesi v0.1 \n\nBu uygulama Aylinux için Cihan Alkan tarafından hazırlanmıştır.")
  169. self.msgBox.show()