【发布时间】:2023-03-04 14:18:01
【问题描述】:
我正在尝试为我的程序制作 GUI,但在尝试从点击的 QPushButton 访问文本时遇到了问题。
问题是,当我使用 for 循环遍历按钮列表时,button.clicked.connect(function) 将每次点击都视为对最后一项的点击(至少,我认为是这样)。
这里是示例代码
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QPushButton, QHBoxLayout
import sys
def main():
app = QApplication(sys.argv)
# main window
win = QMainWindow()
win.setGeometry(100, 100, 460, 80)
win.setWindowTitle("My great app")
# layout
box = QWidget(win)
box.setGeometry(0, 0, 460, 80)
layout = QHBoxLayout(win)
box.setLayout(layout)
btns = []
# creating 10 buttons
for i in range(10):
btn = QPushButton(str(i+1), box)
btns.append(btn)
layout.addWidget(btns[i], i)
# accessing buttons text
for btn in btns:
btn.clicked.connect(lambda: print(btn.text()))
win.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
如果您运行程序并单击任何按钮,它每次都会打印“10”。
【问题讨论】:
标签: python user-interface pyqt pyqt5