zoukankan      html  css  js  c++  java
  • pyqt5 控件篇

    from PyQt5.QtWidgets import *
    from PyQt5.QtGui import QStandardItemModel, QStandardItem
    from PyQt5.QtCore import QSize, QPoint, QRect, QModelIndex
    import sys
    class Example(QMainWindow): # 继承QMainWindow
      #初步介绍常用控件的用法,以后会单独介绍每种控件的详细用法
        def __init__(self):
            super().__init__()
            self.setUi()
        def setUi(self):
            self.statusBar().showMessage('statusbar')
            self.setGeometry(300, 300, 300, 300)
            self.setWindowTitle('test')
            self.setMouseTracking(True)
            self.setFixedSize(800, 400)
            #==============PushButton
            self.pushButton = QPushButton(self)
            self.pushButton.setStyleSheet('text-align: center;'
                                          '60;'
                                          'height:40;'
                                          'background:yellow;') # 竟然支持css 很强大
            self.pushButton.setText('这是一个测试按钮')
            #===============Label
            self.label = QLabel(self)
            self.label.setGeometry(QRect(10, 130, 300, 40))
            self.label.setText('我是label标签')
            #===============comboBox
            self.comboBox = QComboBox(self)
            self.comboBox.setGeometry(QRect(10, 60, 100, 60))
            itemdata = ['item0', 'item1', 'item2']
            self.comboBox.addItems(itemdata)
            self.comboBox.currentIndexChanged.connect(self._comboxChanged)
            #设置当前默认item index = 0 第一个选项
            self.comboBox.setCurrentIndex(0)
            #=-=============listWidget 普通listview 或者 widget不能添加表头,要使用表头请使用 treeView
            self.listWidget = QListWidget(self)
            self.listWidget.addItems(['item1', 'item2', 'item3'])
            self.listWidget.setGeometry(QRect(10, 160, 160, 100))
            self.listWidget.setFixedWidth(60) # 设置固定宽度
            self.listWidget.itemClicked.connect(self._listClicked)
            #===============treeWidget
            self.treeWidget = QTreeWidget(self)
            self.treeWidget.setGeometry(QRect(170, 160, 160, 100))
            headers = ['head1', 'head2', 'head3']
            self.treeWidget.setColumnCount(3)
            self.treeWidget.setColumnWidth(0, 50)
            self.treeWidget.setColumnWidth(1, 50)
            self.treeWidget.setColumnWidth(2, 50)
            self.treeWidget.setHeaderLabels(headers)
            #===============tableWidget
            self.tableWidget = QTableWidget(self)
            self.tableWidget.setGeometry(QRect(340, 160, 224, 100))
            self.tableWidget.setColumnCount(3)
            self.tableWidget.setColumnWidth(0, 60)
            self.tableWidget.setColumnWidth(1, 60)
            self.tableWidget.setColumnWidth(2, 60)
    
            self.tableWidget.setHorizontalHeaderLabels(('head1', 'head2', 'head3'))
            self.tableWidget.setSelectionMode(QTableWidget.NoSelection)
            self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Fixed) # 表头不可拖动
            self.tableWidget.itemClicked.connect(self._tableItem_OnClicked) # item被点击事件
            #初始化十行 row 注意 row 与 item 的区别
    
            for count in range(10):
                self.tableWidget.insertRow(count)
                #填充列项
                self.tableWidget.setItem(count, 0, QTableWidgetItem('item0'))
                self.tableWidget.setItem(count, 1, QTableWidgetItem('item1'))
                self.tableWidget.setItem(count, 2, QTableWidgetItem('item2'))
            self.show()
        def _comboxChanged(self, index):
            self.label.setText('comboboxChanged: index-%d item-%s' %(index, self.comboBox.itemText(index)))
        def _listClicked(self, item):
            print(item.text())
            index  = self.listWidget.indexFromItem(item) #type: QModelIndex # 数据模型 用来定位数据,行信息,列信息,item文本等
            print(index.row()) #获取所在行
        def _tableItem_OnClicked(self, item):
            tmp = item #type: QTableWidgetItem
            print(tmp.text())
            print(self.tableWidget.indexFromItem(tmp).row()) #获取所在行
       
      def mousePressEvent(self, e):  # 鼠标点击事件
            if e.button() == Qt.LeftButton:
                print('leftbutton clicked')
            elif e.button() == Qt.RightButton:
                self.popMenu.exec(self.cursor().pos())  # 弹出菜单
            print('x:', e.x(), 'y:', e.y())  # 这里x y坐标是全局坐标 转换成client 需要用mapFromGlobal
    
        def changeEvent(self, e):
            print(e.type())  # type 代表改变事件的类型,并不是指具体的事件,比如窗口状态的改变,并没有说具体的窗口状态
            if self.windowState() == Qt.WindowMinimized:
                print('窗口最小化')
            elif self.windowState() == Qt.WindowMaximized:
                print('窗口最大化')
       
      if __name__ == '__main__': app = QApplication(sys.argv)
         ex = Example()
         sys.exit(app.exec_()) # 防止和python exec 冲突
      
    
    

      

  • 相关阅读:
    数据结构(2)-链表
    数据结构(1)-数组
    SpringMVC学习总结(一)--Hello World入门
    基本数据类型对象的包装类
    关于String的相关常见方法
    常见的集合容器应当避免的坑
    再一次生产 CPU 高负载排查实践
    分表后需要注意的二三事
    线程池没你想的那么简单(续)
    线程池没你想的那么简单
  • 原文地址:https://www.cnblogs.com/alplf123/p/8330506.html
Copyright © 2011-2022 走看看