๋ชฉ์ฐจ
๊ณ์ฐ๊ธฐ ๋ง๋ค๊ธฐ
์ด ํํ๋ฅผ
์ด ํํ๋ก ๋ฐ๊ฟ๋ณด์
์ค๊ฐ ๊ณผ์
import sys
from PyQt5.QtWidgets import *
class Main(QDialog):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
main_layout =QVBoxLayout()
#๋ ์ด์์ ํ ์ก๊ธฐ
layout_operation = QHBoxLayout()
layout_clear_equal = QHBoxLayout()
layout_number = QGridLayout()
layout_equation_solution = QFormLayout()
### equation , solution ###
self.equation = QLineEdit()
self.solution = QLineEdit()
layout_equation_solution.addRow("Equation: ",self.equation)
layout_equation_solution.addRow("Solytion:" ,self.solution)
### + = * / opeation ###
button_plus =QPushButton("+")
button_minus =QPushButton("-")
button_product =QPushButton("*")
button_devision =QPushButton("/")
layout_operation.addWidget(button_plus)
layout_operation.addWidget(button_minus)
layout_operation.addWidget(button_product)
layout_operation.addWidget(button_devision)
###clear , equal = ###
button_clear = QPushButton("Clear")
button_equal=QPushButton("=")
layout_clear_equal.addWidget(button_clear)
layout_clear_equal.addWidget(button_equal)
### number button ###
number_button_dicct ={}
for number in range(0,10):
number_button_dicct[number] = QPushButton(str(number))
if number>0:
x,y = divmod(number-1,3)
# 3์ผ๋ก ๋๋ด์ ๋ ๋ชซ๊ณผ ๋๋จธ์ง์ ๋ฐ๋ผ ๋ฐฐ์น๋ฅผ ํ๋ฉด ๋๋ค.
layout_number.addWidget(number_button_dicct[number], x, y)
elif number ==0:
layout_number.addWidget(number_button_dicct[number],3,1)
main_layout.addLayout(layout_equation_solution)
main_layout.addLayout(layout_operation)
main_layout.addLayout(layout_clear_equal)
main_layout.addLayout(layout_number)
self.setLayout(main_layout)
self.resize(400, 400)
self.show()
if __name__ =='__main__':
app = QApplication(sys.argv)
main = Main()
sys.exit(app.exec_())
์ด๋ฒคํธ ์ถ๊ฐํ๊ธฐ
### ์ด๋ฒคํธ ์ถ๊ฐํ๊ธฐ ###
button_plus.clicked.connect(self.button_plus_click)
### ์ด๋ฒคํธ ์ถ๊ฐํ๊ธฐ ###
button_plus.clicked.connect(self.button_plus_clicked)
button_minus.clicked.connect(self.button_minus_clicked)
button_product.clicked.connect(self.button_product_clicked)
button_devision.clicked.connect(self.button_devision_clicked)
layout_operation.addWidget(button_plus)
layout_operation.addWidget(button_minus)
layout_operation.addWidget(button_product)
layout_operation.addWidget(button_devision)
def button_plus_clicked(self):
#ํ์ฌ equation ๋ฐ์ค๊ธฐ
equation = self.equation.text()
equation += '+'
self.equation.setText(equation)
def button_minus_clicked(self):
# ํ์ฌ equation ๋ฐ์ค๊ธฐ
equation = self.equation.text()
equation += '-'
self.equation.setText(equation)
def button_product_clicked(self):
# ํ์ฌ equation ๋ฐ์ค๊ธฐ
equation = self.equation.text()
equation += '*'
self.equation.setText(equation)
def button_devision_clicked(self):
# ํ์ฌ equation ๋ฐ์ค๊ธฐ
equation = self.equation.text()
equation += '/'
self.equation.setText(equation)
์ซ์ ๋ฒํผ ๋๋ฅด๋ฉด Equation์ ๋จ๋๋ก
number_button_dicct[number].clicked.connect(lambda state, num=number: self.number_button_click(num))
def number_button_click(self,num):
equation = self.equation.text()
equation+=str(num)
self.equation.setText(equation)
equal ๊ธฐ๋ฅ
eval(์์) -> ์์์ ๊ณ์ฐํ ๊ฐ์ returnํ๋ค.
button_equal.clicked.connect(self.button_equal_click)
def button_equal_click(self):
equation = self.equation.text()
solution = eval(equation)
self.solution.setText(str(solution))
clear ๋ฒํผ ๊ธฐ๋ฅ ์ถ๊ฐ
์ด ์ํ์์ clear ๋ฒํผ์ ๋๋ฅด๋ฉด
์ง
๊ธฐ๋ฅ ์์
#๋๋ค ํจ์
button_plus.clicked.connect(lambda state, operation="+":self.button_operation_clicked(operation))
button_minus.clicked.connect(lambda state, operation="-":self.button_operation_clicked(operation))
button_product.clicked.connect(lambda state, operation="*":self.button_operation_clicked(operation))
button_devision.clicked.connect(lambda state, operation="/":self.button_operation_clicked(operation))
def button_operation_clicked(self,operation):
#ํ์ฌ equation ๋ฐ์ค๊ธฐ
equation = self.equation.text()
equation += operation
self.equation.setText(equation)
์ฌ์น์ฐ์ฐ ๊ธฐ๋ฅ์ ๋๋ค ํจ์ ์ด์ฉํด์ ์์ ํด์ฃผ์๋ค.
728x90
'2022 > ์คํ์์ค ์ํํธ์จ์ด ํ๋ก์ ํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
UI ์์ ํ๊ธฐ (0) | 2022.11.23 |
---|---|
QGridLayout (0) | 2022.11.23 |
GUI ๊ฐ์ 4 (0) | 2022.11.22 |
GUI ๊ฐ์3 (0) | 2022.11.21 |
GUI ๊ฐ์2: ๋ ์ด์์ (0) | 2022.11.20 |