๋ชฉ์ฐจ
import sys
import numpy as np
from PyQt5.QtWidgets import *
class Main(QDialog):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
main_layout =QVBoxLayout()
## #๋ ์ด์์ ํ ์ก๊ธฐ ###
layout_operation_solution = QFormLayout()
layout_funct1 = QGridLayout()
layout_number = QGridLayout()
layout_funct2 =QGridLayout()
### layout_number ๊ณผ layout_funct2๋ฅผ ๋ด์ layout_part ###
layout_part = QHBoxLayout()
### ์์ ์
๋ ฅ & ๊ฒฐ๊ณผ ๊ฐ ๋ํ๋๋ operation_solution ์ฐฝ ๊ตฌํ ###
self.operation_solution = QLineEdit()
layout_operation_solution.addRow("", self.operation_solution)
self.operation_solution.setSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding)
### ๊ธฐ๋ฅ funct1 ๋ฒํผ ๊ตฌํ ###
###๋๋จธ์ง
button_remainder = QPushButton("%")
##CE
button_clear_entry = QPushButton("CE")
## C
button_clear = QPushButton("C")
button_backspace = QPushButton("์ง์ฐ๊ธฐ")
### 1/x
button_reciprocal =QPushButton("1/x")
### ์ ๊ณฑ
button_square = QPushButton("์ ๊ณฑ")
### ์ ๊ณฑ๊ทผ
button_square_root=QPushButton("์ ๊ณฑ๊ทผ")
### ๋๋๊ธฐ
button_division = QPushButton("÷")
#์ด๋ฒคํธ ์ถ๊ฐํ๊ธฐ
button_remainder.clicked.connect(self.button_remainder_clicked)
button_clear_entry.clicked.connect(self.button_clear_entry_clicked)
button_clear.clicked.connect(self.button_clear_clicked)
button_backspace.clicked.connect(self.button_backspace_clicked)
button_reciprocal.clicked.connect(self.button_reciprocal_clicked)
button_square.clicked.connect(self.button_square_clicked)
button_square_root.clicked.connect(self.button_square_root_clicked)
button_division.clicked.connect(self.button_division_clicked)
layout_funct1.addWidget(button_remainder,0 , 0)
layout_funct1.addWidget(button_clear_entry,0 , 1)
layout_funct1.addWidget(button_clear,0 ,2)
layout_funct1.addWidget(button_backspace,0 ,3)
layout_funct1.addWidget(button_reciprocal,1 , 0)
layout_funct1.addWidget(button_square,1,1)
layout_funct1.addWidget(button_square_root,1 ,2)
layout_funct1.addWidget(button_division,1 , 3)
### layout_funct2 ๊ตฌ์ฑํ๊ธฐ ###
button_product = QPushButton("x")
button_minus =QPushButton("-")
button_plus = QPushButton("+")
button_result = QPushButton("=")
button_plus_minus = QPushButton("+/-")
button_add_dot = QPushButton(".")
### ์ฌ์น์ฐ์ฐ ์ด๋ฒคํธ ์ถ๊ฐํ๊ธฐ ###
button_plus.clicked.connect(self.button_plus_clicked)
layout_funct2.addWidget(button_product,0,3)
layout_funct2.addWidget(button_minus,1,3)
layout_funct2.addWidget(button_plus,2,3)
layout_funct2.addWidget(button_result,3,3)
layout_funct2.addWidget(button_plus_minus,3,0)
layout_funct2.addWidget(button_add_dot,3,2)
np = {}
for number in range(0, 10):
np[number] = QPushButton(str(number))
np[number].clicked.connect(lambda state, num = number:
self.number_button_clicked(num))
if number > 0:
x, y = divmod(number - 1, 3)
# 3์ผ๋ก ๋๋ด์ ๋ ๋ชซ๊ณผ ๋๋จธ์ง์ ๋ฐ๋ผ ๋ฐฐ์น๋ฅผ ํ๋ฉด ๋๋ค.
if x==0:
layout_number.addWidget(np[number], 2, y)
elif x==2:
layout_number.addWidget(np[number], 0, y)
else:
layout_number.addWidget(np[number], x, y)
elif number == 0:
layout_number.addWidget(np[number], 3, 1)
layout_part.addLayout(layout_number)
layout_number.addLayout(layout_funct2)
###main_layout์ ์ถ๊ฐ ###
main_layout.addLayout(layout_operation_solution)
main_layout.addLayout(layout_funct1)
main_layout.addLayout(layout_part)
self.setLayout(main_layout)
self.resize(400, 400)
self.show()
def button_remainder_clicked(self):
operation_solution = self.operation_solution.text()
operation_solution += "%"
self.operation_solution.setText(operation_solution)
def button_clear_entry_clicked(self):
operation_solution = self.operation_solution
operation_solution.setText("0")
def button_clear_clicked(self):
operation_solution = self.operation_solution
operation_solution.setText("0")
def button_backspace_clicked(self):
print(2)
def button_reciprocal_clicked(self):
operation_solution = self.operation_solution
operation_solution.setText(np.reciprocal(operation_solution))
def button_square_clicked(self):
print(4)
def button_square_root_clicked(self):
print(5)
def button_division_clicked(self):
operation_solution = self.operation_solution.text()
operation_solution += "÷"
self.operation_solution.setText(operation_solution)
def button_plus_clicked(self):
operation_solution = self.operation_solution.text()
operation_solution += "+"
self.operation_solution.setText(operation_solution)
def button_minus_clicked(self):
operation_solution = self.operation_solution.text()
operation_solution += "-"
self.operation_solution.setText(operation_solution)
def button_production_clicked(self):
operation_solution = self.operation_solution.text()
operation_solution += "x"
self.operation_solution.setText(operation_solution)
def number_button_clicked(self,num):
operation_solution = self.operation_solution.text()
operation_solution += str(num)
self.operation_solution.setText(operation_solution)
if __name__ =='__main__':
app = QApplication(sys.argv)
main = Main()
sys.exit(app.exec_())
728x90