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 冲突
      
    
    

      

  • 相关阅读:
    为图片指定区域添加链接
    数值取值范围问题
    【leetcode】柱状图中最大的矩形(第二遍)
    【leetcode 33】搜索旋转排序数组(第二遍)
    【Educational Codeforces Round 81 (Rated for Div. 2) C】Obtain The String
    【Educational Codeforces Round 81 (Rated for Div. 2) B】Infinite Prefixes
    【Educational Codeforces Round 81 (Rated for Div. 2) A】Display The Number
    【Codeforces 716B】Complete the Word
    一个简陋的留言板
    HTML,CSS,JavaScript,AJAX,JSP,Servlet,JDBC,Structs,Spring,Hibernate,Xml等概念
  • 原文地址:https://www.cnblogs.com/alplf123/p/8330506.html
Copyright © 2011-2022 走看看