一、特殊传参
在 self.listWidget.itemClicked.connect(self.u) 中,当列表控件中的一个项目被点击itemClicked 信号会被触发。 而连接到这个信号的槽函数 self.u 会接收到一个参数,这个参数就是被点击的项目对象。在这里,l 就是接收到的被点击的项目对象,通过 它可以获取项目的相关信息。这种情况同样在QComBox,QListView,QMenu控件中一样存在。
二、代码
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class myWin(QTabWidget):
def __init__(self):
super(myWin, self).__init__()
self.setWindowTitle('列表控件')
lay=QHBoxLayout()
self.listWidget = QListWidget()
self.comBox=QComboBox()
self.listView=QListView()
lay.addWidget(self.listWidget)
lay.addWidget(self.comBox)
lay.addWidget(self.listView)
self.setLayout(lay)
self.setUI_listWidget()
self.setUI_comBox()
self.setUI_listView()
def setUI_listWidget(self):
self.listWidget.addItem('选项1')
self.listWidget.addItem('选项2')
self.listWidget.addItem('选项3')
self.listWidget.addItem('选项4')
self.listWidget.addItem('选项5')
self.listWidget.addItem('选项6')
self.listWidget.itemClicked.connect(self.u)
def u(self,l):
print(l)
'''
在 self.listWidget.itemClicked.connect(self.u) 中,当列表控件中的一个项目被点击时,itemClicked 信号会被触发。
而连接到这个信号的槽函数 self.u 会接收到一个参数,这个参数就是被点击的项目对象。在这里,l 就是接收到的被点击的项目对象,通过
它可以获取项目的相关信息。这种情况同样在QComBox,QListView控件中一样存在
'''
def setUI_comBox(self):
self.comBox.addItem('【下拉列表】选项1')
self.comBox.addItem('【下拉列表】选项2')
self.comBox.addItem('【下拉列表】选项3')
self.comBox.addItem('【下拉列表】选项4')
self.comBox.addItem('【下拉列表】选项5')
self.comBox.addItem('【下拉列表】选项6')
self.comBox.currentIndexChanged.connect(self.v)
def v(self,m):
print(m)
def setUI_listView(self):
listModel=QStringListModel()
list1=['选项1','选项2','选项3','选项4','选项5','选项6']
listModel.setStringList(list1)
self.listView.setModel(listModel)
self.listView.clicked.connect(self.w)
def w(self,n):
print(n)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = myWin()
window.show()
sys.exit(app.exec())
同样适用于菜单对象:
代码如下:
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class myWin(QMainWindow):
def __init__(self):
super(myWin, self).__init__()
self.setWindowTitle('停靠窗口控件')
self.mdi=QMdiArea()
bar = self.menuBar()
file=bar.addMenu('文件')
# file=bar.addAction('文件')
f1=file.addAction('新建')
f2 = file.addAction('打开')
f3 = file.addAction('保存')
file.triggered.connect(self.k)
def k(self,p):
print(p.text())
if __name__ == '__main__':
app = QApplication(sys.argv)
window = myWin()
window.show()
sys.exit(app.exec())