#-*-coding:utf-8-*- #作者--宋春风 #时间:2019-03-05 ''' 1.这里说明我为什不用from XXX import XXX 因为我做项目需要打包成exe,from XXX import XXX打包总失败 2.循环传值解决重要两个条件:1.button是list 2.sender接收你按钮上的字,再做为传入你的事件的值 3.这里写的已经比较清楚了,但是还不是很全面,希望能帮到和我一样遇到过懒得复制粘贴, 想循环创建多个按钮,然后直接连接事件的朋友 4.这个是自己修改后的版本,看的不是很难懂了 ''' import PyQt5.QtCore as Qt import PyQt5.QtWidgets as widgets import PyQt5.QtWebEngineWidgets as QtWeb import PyQt5.QtGui as gui import sys class Sign(widgets.QMainWindow): def __init__(self): super().__init__() self.__initUI__() def __initUI__(self): #窗口大小 self.resize(400,200) self.hoxlayout = widgets.QHBoxLayout(self) #创建一个按钮,想循环传值必须是列表(内容可以试其他我只试过数字--感兴趣可以试试其他) #self.button1 = [] #根据自己的要求自己设置按钮上的字---这里很重要,这些字将会做为传递参数的依据 self.x = ['a','b','c','d'] for j in range(0, len(self.x)): #将数字j加进button #self.button1.append(j) self.button = widgets.QPushButton(self) self.button.setFixedSize(50, 50) self.button.setStyleSheet('''QPushButton{background:#F76677;border-radius:5px;}QPushButton:hover{background:red;}''') #此处将字传入按钮 self.button.setText(self.x[j]) self.hoxlayout.addWidget(self.button) #传达参数--重要,这里sender将接收你点击的字并传入函数 self.button.clicked.connect(lambda :self.table(self.sender().text())) #因为我这使用的是QMainWindow,所以要创建一个Widget,才能显示所有的按钮 self.widget = widgets.QWidget() self.widget.setLayout(self.hoxlayout) self.setCentralWidget(self.widget) def table(self,n): #用于测试,因为只是测试,所有仅仅用打印来证明不是只是最后一个按钮有效,每次点击都会不同 #解决pyqt5循环生成按钮并且直接连接事件,但是点击按钮的时候只是响应最后一个事件 print(n) if __name__ == "__main__": app = widgets.QApplication(sys.argv) window = Sign() window.show() sys.exit(app.exec_())
pyqt5循环生成按钮并且直接连接事件,但是点击按钮的时候只是响应最后一个事件22222
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.