Разместить текст в нужный QLineEdit по нажатию на кнопку "1"
Как в методе one()
сделать:
- если перед нажатием на кнопку
1
фокус был наlineedit
, то писать1
вlineedit
, - если фокус был на
lineedit2
и после этого нажатием на кнопку1
, то писать1
вlineedit2
?
from PyQt5 import QtCore , QtWidgets
from PyQt5.QtGui import QIcon
class MyWindow(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Калькулятор")
self.resize(450, 200)
self.setWindowIcon(QIcon("calculator.png"))
self.grid = QtWidgets.QGridLayout()
self.setLayout(self.grid)
self.label = QtWidgets.QLabel("Ответ:")
self.btn1 = QtWidgets.QPushButton("-")
self.btn2 = QtWidgets.QPushButton("+")
self.btn3 = QtWidgets.QPushButton("/")
self.btn4 = QtWidgets.QPushButton("*")
self.btn5 = QtWidgets.QPushButton("1")
self.btn6 = QtWidgets.QPushButton("2")
self.btn7 = QtWidgets.QPushButton("3")
self.btn8 = QtWidgets.QPushButton("4")
self.btn9 = QtWidgets.QPushButton("5")
self.btn10 = QtWidgets.QPushButton("6")
self.btn11 = QtWidgets.QPushButton("7")
self.btn12 = QtWidgets.QPushButton("8")
self.btn13 = QtWidgets.QPushButton("9")
self.btn14 = QtWidgets.QPushButton("0")
self.btn16 = QtWidgets.QPushButton("C")
self.btn15 = QtWidgets.QPushButton("**")
self.lineedit = QtWidgets.QLineEdit()
self.lineedit2 = QtWidgets.QLineEdit()
self.grid.addWidget(self.label, 9, 1)
self.grid.addWidget(self.lineedit, 0, 0)
self.grid.addWidget(self.lineedit2, 0 ,1)
self.grid.addWidget(self.btn1, 1, 0)
self.grid.addWidget(self.btn2 , 1 , 1)
self.grid.addWidget(self.btn3 , 2, 0)
self.grid.addWidget(self.btn4 , 2, 1)
self.grid.addWidget(self.btn15 , 3 , 0)
self.grid.addWidget(self.btn16 ,3 , 1)
self.grid.addWidget(self.btn5 ,4 , 0)
self.grid.addWidget(self.btn6 , 4 ,1)
self.grid.addWidget(self.btn7 , 5 ,0)
self.grid.addWidget(self.btn8 , 5 ,1)
self.grid.addWidget(self.btn9 , 6 ,0)
self.grid.addWidget(self.btn10, 6 ,1)
self.grid.addWidget(self.btn11 , 7 ,0)
self.grid.addWidget(self.btn12, 7 ,1)
self.grid.addWidget(self.btn13, 8 ,0)
self.grid.addWidget(self.btn14, 8, 1)
self.btn1.clicked.connect(self.minus)
self.btn2.clicked.connect(self.plus)
self.btn3.clicked.connect(self.delen)
self.btn4.clicked.connect(self.umn)
self.btn5.clicked.connect(self.one)
self.btn6.clicked.connect(self.two)
self.btn7.clicked.connect(self.three)
self.btn8.clicked.connect(self.four)
self.btn9.clicked.connect(self.five)
self.btn10.clicked.connect(self.six)
self.btn11.clicked.connect(self.seven)
self.btn12.clicked.connect(self.eight)
self.btn13.clicked.connect(self.nine)
self.btn14.clicked.connect(self.zero)
self.btn16.clicked.connect(self.clear)
self.btn15.clicked.connect(self.qwe)
self.btn1.setShortcut("Ctrl+1")
self.btn2.setShortcut("Ctrl+2")
self.btn3.setShortcut("Ctrl+3")
self.btn4.setShortcut("Ctrl+4")
self.btn16.setShortcut("Ctrl+5")
self.btn15.setShortcut("Ctrl+6")
def qwe(self):
result = int(self.lineedit.text()) ** int(self.lineedit2.text())
self.label.setText(f"Ответ: {result}")
def minus(self):
result = int(self.lineedit.text()) - int(self.lineedit2.text())
self.label.setText(f"Ответ: {result}")
def plus(self):
result = int(self.lineedit.text()) + int(self.lineedit2.text())
self.label.setText(f"Ответ: {result}")
def delen(self):
result = int(self.lineedit.text()) / int(self.lineedit2.text())
self.label.setText(f"Ответ: {result}")
def umn(self):
result = int(self.lineedit.text()) * int(self.lineedit2.text())
self.label.setText(f"Ответ: {result}")
def clear(self):
self.lineedit.clear()
self.lineedit2.clear()
def one(self):
if self.lineedit.setFocus():
self.lineedit.insert("1")
if self.lineedit2.setFocus():
self.lineedit2.insert("1")
def two(self):
#self.lineedit.setText("2")
#self.lineedit2.setText("2")
print(2)
def three(self):
#self.lineedit.setText("3")
#self.lineedit2.setText("3")
print(3)
def four(self):
#self.lineedit.setText("4")
#self.lineedit2.setText("4")
print(4)
def five(self):
#self.lineedit.setText("5")
#self.lineedit2.setText("5")
print(5)
def six(self):
#self.lineedit.setText("6")
#self.lineedit2.setText("6")
print(6)
def seven(self):
#self.lineedit.setText("7")
#self.lineedit2.setText("7")
print(7)
def eight(self):
#self.lineedit.setText("8")
#self.lineedit2.setText("8")
print(8)
def nine(self):
#self.lineedit.setText("9")
#self.lineedit2.setText("9")
print(9)
def zero(self):
#self.lineedit.setText("0")
#self.lineedit2.setText("0")
print(0)
def changeEvent(self, e):
if e.type() == QtCore.QEvent.WindowStateChange:
if self.isMinimized():
print("Окно свернуто")
elif self.isMaximized():
print("Окно развернуто")
elif self.isActiveWindow():
print("Окно в фокусе")
return QtWidgets.QWidget.changeEvent(self, e)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
Источник: Stack Overflow на русском