Как вывести текст с кнопки?
import sys
from PyQt5.QtWidgets import QApplication, QPushButton, QLineEdit
from PyQt5.QtWidgets import QMainWindow
dic = {'А': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..',
'E': '.', 'F': '..-.', 'G': '--.', 'H': '....', 'I': '..',
'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.',
'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...',
'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',
'Y': '-.--', 'Z': '--..'}
class FirstForm(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(800, 300, 500, 200)
self.setWindowTitle('Азбука Морзе 2')
stroka = 'abcdefghijklmnopqrstuvwxyz'
a = 30
x = 10
y = 20
for i in range(len(stroka)):
button = QPushButton(str(stroka[i]), self)
button.move(x, y)
button.resize(a, a)
if i == 14:
y += 20
x = 10
y += 10
else:
x += 30
button.clicked.connect(self.click)
self.input = QLineEdit(self)
self.input.move(10, 90)
self.input.resize(450, 30)
def click(self, btn):
#???
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Функция lambda вам в помощь:
button.clicked.connect(lambda ch, btn=button :self.on_click(btn))
import sys
from PyQt5.QtWidgets import QApplication, QPushButton, QLineEdit
from PyQt5.QtWidgets import QMainWindow
dic = {'А': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..',
'E': '.', 'F': '..-.', 'G': '--.', 'H': '....', 'I': '..',
'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.',
'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...',
'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',
'Y': '-.--', 'Z': '--..'}
class FirstForm(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(800, 300, 500, 200)
self.setWindowTitle('Азбука Морзе 2')
stroka = 'abcdefghijklmnopqrstuvwxyz'
a = 30
x = 10
y = 20
for i in range(len(stroka)):
button = QPushButton(str(stroka[i]), self)
button.move(x, y)
button.resize(a, a)
if i == 14:
y += 20
x = 10
y += 10
else:
x += 30
button.clicked.connect(lambda ch, btn=button :self.on_click(btn))
self.input = QLineEdit(self)
self.input.move(10, 90)
self.input.resize(450, 30)
def on_click(self, btn):
print(f'Вы нажали кнопку: {btn.text()}')
self.input.setText(f'{self.input.text()}{btn.text()}')
if __name__== "__main__":
import sys
app = QApplication(sys.argv)
Form = FirstForm()
Form.show()
sys.exit(app.exec())
