• PyQt5-高级控件使用(QListView)


    QListView用于展示数据,子类是QListWidget。QlistView基于模型Mode,需要程序创建Model然后保存数据;

    QListWidget是一个升级版的QlistView,它建立了一个数据存储模型(QListWidgetItem),直接调用addItems()函数即可添加条目(Item)

    常用方法如下:

    常用信号:

    例如:

     1 #QListView使用
     2 from PyQt5.QtWidgets import   QMessageBox,QListView, QStatusBar,  QMenuBar,QMenu,QAction,QLineEdit,QStyle,QFormLayout,   QVBoxLayout,QWidget,QApplication ,QHBoxLayout, QPushButton,QMainWindow,QGridLayout,QLabel
     3 from PyQt5.QtGui import QIcon,QPixmap,QStandardItem,QStandardItemModel
     4 from PyQt5.QtCore import QStringListModel,QAbstractListModel,QModelIndex,QSize
     5 import sys
     6 
     7 class WindowClass(QMainWindow):
     8     def __init__(self,parent=None):
     9         super(WindowClass, self).__init__(parent)
    10         self.layout=QVBoxLayout()
    11         self.resize(200,300)
    12         listModel=QStringListModel()
    13         listView=QListView()
    14         items=["张三","李四","小明","JONES"]
    15         
    16         listModel.setStringList(items)
    17         listView.setModel(listModel)
    18         
    19         listView.clicked.connect(self.checkItem)
    20 
    21         self.layout.addWidget(listView)
    22         widget = QWidget()
    23         widget.setLayout(self.layout)
    24         self.setCentralWidget(widget)
    25 
    26     def  checkItem(self,index):
    27          QMessageBox.information(self,"ListView","选择项是:%d"%(index.row()))
    28 
    29 if __name__=="__main__":
    30     app=QApplication(sys.argv)
    31     win=WindowClass()
    32     win.show()
    33     sys.exit(app.exec_())

    以上是一个QStringListView效果;

    下面是一个QListView或者QIconView实现的,带有图标的效果,如下程序:

     1 #QListView使用
     2 from PyQt5.QtWidgets import   QMessageBox,QListView, QStatusBar,  QMenuBar,QMenu,QAction,QLineEdit,QStyle,QFormLayout,   QVBoxLayout,QWidget,QApplication ,QHBoxLayout, QPushButton,QMainWindow,QGridLayout,QLabel
     3 from PyQt5.QtGui import QIcon,QPixmap,QStandardItem,QStandardItemModel
     4 from PyQt5.QtCore import QStringListModel,QAbstractListModel,QModelIndex,QSize
     5 import sys
     6 
     7 class WindowClass(QMainWindow):
     8     def __init__(self,parent=None):
     9         super(WindowClass, self).__init__(parent)
    10         self.layout=QVBoxLayout()
    11         self.resize(200,300)
    12         listView=QListView()
    13         listView.setViewMode(QListView.ListMode)#或者使用QListView.IconMode  QListView.ListMode
    14         #listView.setMovement(QListView.Static)
    15         listView.setIconSize(QSize(20,20))#图标的大小(原始图标大小如果100,100,此时设置草果原始大小则失效)
    16         listView.setGridSize(QSize(60,40))#每个选项所在网格大小(每个选项外层grid宽高)
    17         listView.setMaximumHeight(200)#listView整体最大高度
    18         #listView.setMinimumSize(QSize(200,200))#listView最小面积(一般如果设置最大高和宽属性后就不设置这个属性了)
    19         #listView.setMaximumSize(QSize(500,500))#listVIew最大面积(一般如果设置最大高和宽属性后就不设置这个属性了)
    20         listView.setMinimumHeight(120)#listView最小高度
    21 
    22         listView.setResizeMode(QListView.Adjust)
    23         #listView.setMovement(QListView.Static)#设置图标可不可以移动,默认是可移动的,但可以改成静态的:
    24 
    25         self.item_1=QStandardItem(QIcon("./image/save.ico"), "普通员工A");
    26         self.item_2 = QStandardItem(QIcon("./image/save.ico"), "普通员工B");
    27 
    28         model=QStandardItemModel()
    29         model.appendRow(self.item_1)
    30         model.appendRow(self.item_2)
    31         listView.setModel(model)
    32 
    33         listView.clicked.connect(self.checkItem)
    34 
    35         self.layout.addWidget(listView)
    36         widget = QWidget()
    37         widget.setLayout(self.layout)
    38         self.setCentralWidget(widget)
    39 
    40 
    41     def  checkItem(self,index):
    42          QMessageBox.information(self,"ListView","选择项是:%d"%(index.row()))
    43 
    44 if __name__=="__main__":
    45     app=QApplication(sys.argv)
    46     win=WindowClass()
    47     win.show()
    48     sys.exit(app.exec_())

  • 相关阅读:
    P3990 [SHOI2013]超级跳马
    P4279 [SHOI2008]小约翰的游戏
    zabbix、agent端服务器图形化展示
    zabbix_agent代理端监控FTP服务
    hadoop SecondNamenode详解
    HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER
    Linux netstat命令详解(检验本机各端口的网络连接情况)
    查看监听端口命令
    Hadoop服务的端口50070无法访问的问题
    Linux-centos6.8下关闭防火墙
  • 原文地址:https://www.cnblogs.com/ygzhaof/p/10077192.html
Copyright © 2020-2023  润新知