#-*-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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.