pyqt5第六部分

#list列表操作函数
          def clicked(self, Index):
              print(Index)
              print(self.ui.listWidget.item(self.ui.listWidget.row(Index)).text())
              print(self.ui.listWidget.row(Index))
              # QMessageBox.information(self, "QListWidget", "您选择了:" + self.ui.listWidget.item(self.ui.listWidget.row(Index)).text())
      
      #listview列表vieW操作函数
          def listviewclicked(self,item):
              print(item.row())
              print(self.list[item.row()])
              # QMessageBox.information(self,"QListView","您选择了:" + self.list[item.row()])
      
      #table表格操作函数
          #升降排序
          def order(self):
              if self.orderType == Qt.DescendingOrder:
                  self.orderType = Qt.AscendingOrder
              else:
                  self.orderType = Qt.DescendingOrder
              self.ui.tableWidget.sortItems(1, self.orderType)
      
      #使用线程定义信号和LCD显示函数和进度条函数处理
          def countTime(self):
              global sec
              sec += 1
              self.ui.lcdNumber.display(sec)
              self.ui.progressBar.setValue(sec)#进度条处理
      
          def end(self):
              QMessageBox.information(self,'消息','计数结束',QMessageBox.Ok)
      
          def work(self):
              self.workThread.start()
      
      #Scrollbar控制操作函数
          def sliderMoved(self):
              #改变字体颜色
              palette = QPalette()
              c = QColor(self.ui.horizontalScrollBar.value(),200,255,255)
              palette.setColor(QPalette.Foreground,c)
              self.ui.labelQslier.setPalette(palette)
              #改变字体位置
              self.ui.labelQslier.move(self.ui.labelQslier.x(),self.y + self.ui.horizontalScrollBar.value())
      
      #自动关闭界面函数
          def autoclose(self):
              self.ui.labelclose.setText('<font color=red size=5><b>Hello World,窗口在5秒后自动关闭!</b></font>')
              QTimer.singleShot(5000,app.quit)#定时器自带信号函数
      #动态显示时间函数
          def showTime(self):
              time = QDateTime.currentDateTime()
      
              timeDisplay = time.toString("yyyy-MM-dd hh:mm:ss dddd")
              self.ui.labelshowtime.setText(timeDisplay)
          def startTimer(self):
              self.timer.start(1000)
              self.ui.pushButtonstop.setEnabled(True)
              self.ui.pushButtonstart.setEnabled(False)
      
          def endTimer(self):
              self.timer.stop()
              self.ui.pushButtonstop.setEnabled(False)
              self.ui.pushButtonstart.setEnabled(True)
      
      #打印成PDF
          def print(self):
              printer = QtPrintSupport.QPrinter()
      
              painter = QtGui.QPainter()
              # 将绘制的目标重定向到打印机
              painter.begin(printer)
              screen = self.ui.dockWidget.grab()
              painter.drawPixmap(10,10,screen)
              screen1 = self.ui.labelPic.grab()
              painter.drawPixmap(200, 200, screen1)
              painter.end()
              print("print")
      
      #显示打印对话框的打印机
          # 打开文件
          def openFile(self):
              fname = QFileDialog.getOpenFileName(self, '打开文本文件', './')
              if fname[0]:
                  with open(fname[0], 'r', encoding='utf-8', errors='ignore') as f:
                      self.ui.textEdit.setText(f.read())
      
              # 显示打印设置对话框
      
          def showSettingsDialog(self):
              printDialog = QPageSetupDialog(self.printer, self)
              printDialog.exec()
      
              # 显示打印对话框
          def showPrintDialog(self):
              printdialog = QPrintDialog(self.printer, self)
              if QDialog.Accepted == printdialog.exec():
                  self.ui.textEdit.print(self.printer)
      #通过LIST索引改变而改变Stack页面函数
          def displaystack(self, index):
                  print(index)
                  self.ui.stackedWidget.setCurrentIndex(index)
      
      #绘图控件绘制各种图形,文字,图片
          def paintEvent(self, event):
              qp = QPainter()
              qp.begin(self)
      
              qp.setPen(Qt.blue)
      
              # 绘制弧
              rect = QRect(0, 0, 100, 100)
              # alen: 1个alen等于1/16度   45 * 16
              qp.drawArc(rect, 0, 50 * 16)
              # 通过弧绘制圆
              qp.setPen(Qt.red)
              qp.drawArc(120, 10, 100, 100, 0, 360 * 16)
      
              # 绘制带弦的弧
              qp.drawChord(10, 120, 100, 100, 12, 130 * 16)
      
              # 绘制扇形
              qp.drawPie(10, 240, 100, 100, 12, 130 * 16)
      
              # 椭圆
              qp.drawEllipse(120, 120, 150, 100)
              # 绘制5边形
              point1 = QPoint(140, 380)
              point2 = QPoint(270, 420)
              point3 = QPoint(290, 512)
              point4 = QPoint(290, 588)
              point5 = QPoint(200, 533)
      
              polygon = QPolygon([point1, point2, point3, point4, point5])
              qp.drawPolygon(polygon)
      
              # 绘制图像
              image = QImage('./8.jpg')
              rect = QRect(300, 200, image.width() / 6, image.height() / 6)
              # image.save('./images/book1.png')
              qp.drawImage(rect, image)
      
              # qp.setPen(QColor(150, 43, 5))#设置画笔颜色也可以这样设置
              # qp.setFont(QFont('SimSun', 25))
              # qp.drawText(event.rect(), Qt.AlignCenter, "Python从菜鸟到高手")
              #设置画刷画图
              brush = QBrush(Qt.Dense1Pattern)
              qp.setBrush(brush)
              qp.setPen(Qt.blue)
              qp.drawRect(300 , 300 , 100 ,100)
              #设置画笔类型
              pen = QPen(Qt.red, 3, Qt.SolidLine)
              qp.setPen(pen)
              qp.drawLine(20, 40, 250, 40)
              pen.setStyle(Qt.DashLine)
              qp.setPen(pen)
              qp.drawLine(20, 80, 250, 80)
              #画点
              qp.drawPoint(100,200)
              qp.end()
      
      # #利用剪贴板复制粘贴文本及图像,这里不能用,剪贴板只能在QDialog界面里面用,待查资料能否用MAIN
          def copyText(self):
              clipboard = QApplication.clipboard()
              clipboard.setText("复制的文本文字")
      
          def pasteText(self):
              clipboard = QApplication.clipboard()
              self.ui.labelQslier.setText(clipboard.text())
      
          def copyImage(self):
              clipboard = QApplication.clipboard()
              clipboard.setPixmap(QPixmap("./8.jpg"))
      
          def pasteImage(self):
              clipboard = QApplication.clipboard()
              self.ui.labelQslier.setPixmap(clipboard.pixmap())
      #发送自定义信号函数
          def signalemit(self):
              self.signal.signalemit()
      
      #采用Lambda表达式函数传递参数
          def landaonButtonClick(self,m,n):
              print("m + n =",m + n )
              QMessageBox.information(self,"结果",str(m+n))
      
      #嵌入WEB网页点击打开新页面函数
          def urlChanged(QUrl):
              print("点击了WEB页面链接")
      
      
      
      if __name__ == '__main__':
          app = QApplication(sys.argv)
          main = MainWindow()
          main.show()
          sys.exit(app.exec_())
      

        - 导入qt模块的控件以及designer设计的界面ui所生成的py文件

            - from PyQt5.QtWidgets import QDesktopWidget,QMainWindow,QApplication
import menuui

        - 创建界面类,继承父类QMainWindow,QtWidgets,Dialog

            - class MainWindow(QMainWindow):

        - 在创建的界面类里定义初始化函数,函数执行时候自动执行__init__()函数

            - def __init__(self):
    super(MainWindow, self).__init__()
    self.initUI()

        - 在创建的类里面定义界面的函数,函数里面封装designer设计界面导入以及控件触发事件的设置(如:点击,状态、时间改变等)

            - def initUI(self):
    self.ui = menuui.Ui_MainWindow()
    # 初始化界面
    self.ui.setupUi(self)
    self.ui.menufile.triggered.connect(self.processTrigger)

        - 在创建的类里面定义控件的处理函数

            - def processTrigger(self, q):
    print(q.text())

        - 主函数

            - if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())

posted @ 2021-04-13 22:25  傻老头  阅读(193)  评论(0)    收藏  举报