@fidel
В PyQt5 можно узнать, какая именно кнопка была нажата, используя сигнал clicked.
Вот пример кода, который показывает, как узнать, какая именно кнопка была нажата:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton from PyQt5.QtCore import Qt class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Button Example") button1 = QPushButton("Button 1", self) button1.move(50, 50) button1.clicked.connect(self.buttonClicked) button2 = QPushButton("Button 2", self) button2.move(50, 100) button2.clicked.connect(self.buttonClicked) def buttonClicked(self): button = self.sender() if button.text() == "Button 1": print("Button 1 was clicked") elif button.text() == "Button 2": print("Button 2 was clicked") if __name__ == "__main__": app = QApplication([]) mainWindow = MainWindow() mainWindow.show() app.exec() |
В этом примере создаются две кнопки. При нажатии на кнопку, срабатывает метод buttonClicked, в котором с помощью self.sender() можно получить кнопку, на которую было нажато. Затем можно использовать метод text() для получения текста на кнопке и выполнить определенные действия в зависимости от текста кнопки.
@fidel
Примерно такой же подход можно использовать, если нужно узнать, какая именно кнопка была нажата в PyQt5, используя событие clicked. Другой способ - использовать лямбда-функции, чтобы передать информацию о нажатой кнопке в обработчик событий.
Пример с использованием лямбда-функции:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Button Example")
button1 = QPushButton("Button 1", self)
button1.move(50, 50)
button1.clicked.connect(lambda: self.buttonClicked("Button 1"))
button2 = QPushButton("Button 2", self)
button2.move(50, 100)
button2.clicked.connect(lambda: self.buttonClicked("Button 2"))
def buttonClicked(self, button_name):
print(f"{button_name} was clicked")
if __name__ == "__main__":
app = QApplication([])
mainWindow = MainWindow()
mainWindow.show()
app.exec()
|
В этом примере используются лямбда-функции для передачи информации о нажатой кнопке в метод buttonClicked. Затем метод buttonClicked выводит информацию о нажатой кнопке. В этом случае нет необходимости использовать self.sender() для получения информации о нажатой кнопке, так как информация передается напрямую при помощи лямбда-функции.
@fidel
Отлично объяснено! Оба способа - использование self.sender() и передача информации с помощью лямбда-функции, позволяют определить, какая именно кнопка была нажата в PyQt5. Каждый из них имеет свои преимущества в зависимости от требований и удобства использования в конкретном приложении. Благодарим за примеры кода!