如何定义单个按钮的功能?
告诉我如何解决当您单击按钮(已在下方列表中)时显示在控制台中的是最后添加的按钮(其文本)的错误。
根据这个想法,它应该显示被点击的按钮的文本。
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QFrame, QPushButton
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.count_of_buttons = 1
self.centralWidget = QWidget()
self.setCentralWidget(self.centralWidget)
self.setGeometry(700, 200, 500, 400)
self.button_hello = QPushButton('Hello')
self.button_hello.clicked.connect(self.add_button)
self.layout_buttons = QVBoxLayout()
self.layout_buttons.addStretch() # Это добавит пружину, прижимающую виджеты вверх
self.frame = QFrame()
self.frame.setMinimumSize(200, 200)
self.frame.setFrameStyle(QFrame.Box)
self.frame.setLayout(self.layout_buttons)
main_layout = QVBoxLayout(self.centralWidget)
main_layout.addWidget(self.button_hello)
main_layout.addWidget(self.frame)
def add_button(self):
self.button = QPushButton(f"Кнопка № {self.count_of_buttons}")
self.button.clicked.connect(self.pressed_btn)
self.count_of_buttons += 1
self.layout_buttons.insertWidget(0, self.button) # Добавление в начало, с пружиной это прижмет вверх
def pressed_btn(self):
print(f"кнопка нажата: {self.button.text()}") # выводится постоянно последняя добавленная кнопка
if __name__ == '__main__':
app = QApplication(sys.argv)
form = Example()
form.show()
sys.exit(app.exec())
也许您可以以某种方式按类型访问按钮:
print(QPushButton().text())
试试这样: