pyqt5第五部分

  #以下是控件处理函数#
      #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
      # *------------------------------------------------------------------------------------
          #菜单和状态栏操作函数
          def processTrigger(self, q):
              print(q.text())
              #mid area打开多窗口
              if q.text() == "new":
                  self.ui.mdiArea.addSubWindow(self.ui.subwindow1)#把子窗口添加到MID AREA窗口内
                  self.ui.subwindow1.show()
              elif q.text() == "save":
                  self.ui.mdiArea.addSubWindow(self.ui.subwindow2)
                  self.ui.subwindow2.show()
              elif q.text() == "cascade":
                  self.ui.mdiArea.cascadeSubWindows() #叠加子窗口
              elif q.text() == "tile":
                  self.ui.mdiArea.tileSubWindows()#平铺子窗口
              self.ui.statusBar.showMessage(q.text() + " 菜单被点击了", 5000)
      # *************************************************************************************
      
      # *------------------------------------------------------------------------------------
          #日历操作函数
          def showDate(self,date):
              print(self.ui.calendarWidget.selectedDate())
              self.ui.labelcal.setText((self.ui.calendarWidget.selectedDate().toString("yyyy-MM-dd dddd")))
      # ***********************************************************************************
      
      #--------------------------------------------------------------------------------------
          # 时间日期操作函数
          # 日期变化
          def onDateChanged(self, date):
              print(date)
              self.ui.labelday.setText(self.ui.dateEdit.date().toString("yyyy-MM-dd dddd"))
              # 时间变化
          def onTimeChanged(self, time):
              print(time)
              self.ui.labeltime.setText(self.ui.timeEdit.time().toString("HH:mm:ss"))
      
              # 日期和时间变化
      
          def onDateTimeChanged(self, datetime):
                  print(datetime)
                  self.ui.labeldaytime.setText(self.ui.dateTimeEdit.dateTime().toString("yyyy/MM/dd dddd HH:mm:ss"))
      #复选框函数
          def checkboxState(self,cb):
              print(cb.text())
              print(self.sender().text())
              print(self.ui.checkBox1.text())
              print(self.ui.checkBox1.isChecked())
              print(self.ui.checkBox1.checkState())
              # check1Status = self.ui.checkBox1.text() + ', isChecked=' + str(self.ui.checkBox1.isChecked()) + ',checkState=' + str(self.ui.checkBox1.checkState()) + '\n'
              # check2Status = self.ui.checkBox2.text() + ', isChecked=' + str(self.ui.checkBox2.isChecked()) + ',checkState=' + str(self.ui.checkBox2.checkState()) + '\n'
              # check3Status = self.ui.checkBox3.text() + ', isChecked=' + str(self.ui.checkBox3.isChecked()) + ',checkState=' + str(self.ui.checkBox3.checkState()) + '\n'
              # print(check1Status + check2Status + check3Status)
      
      
      #下拉菜单comboBox操作函数
          # @QtCore.pyqtSlot()# 通过控件名称自动链接函数
          # def on_comboBox_currentIndexChanged(self, i):  # 通过控件名称自动链接函数
          def selectionChange(self,i):#通过槽链接函数
              self.ui.labelcombx.setText(self.ui.comboBox.currentText())
              self.ui.labelcombx.adjustSize()
              print(self.ui.comboBox.currentIndex())
              for count in range(self.ui.comboBox.count()):
                  print('item' + str(count) + '=' + self.ui.comboBox.itemText(count))
              print('current index',i,'selection changed', self.ui.comboBox.currentText())
      
      #Lable操作函数,注意电脑的路径是\,而QPIXMAP是/
          def linkHovered(self):
              print('当鼠标滑过labela标签时,触发事件')
              #缩放图片并显示
              img = QImage("D:/projects/PyQt5/pic/2f9c8b91b3b404c699ebc022cefe3ef6.jpg")
              result = img.scaled(self.ui.labelPic.width(), self.ui.labelPic.height(),Qt.IgnoreAspectRatio,Qt.SmoothTransformation)
              # self.ui.labelPic.setPixmap(QPixmap("D:/projects/PyQt5/pic/2f9c8b91b3b404c699ebc022cefe3ef6.jpg"))
              self.ui.labelPic.setPixmap(QPixmap.fromImage(result))
          def linkClicked(self):
              print('当鼠标单击labella标签时,触发事件')
      #Qedit函数
          def textChanged(self,text):
              print('输入的内容:' + text)
      
          def enterPress(self):
              print('已输入值')
              print(self.sender().text())
              print(self.ui.lineEditpassd.text())
      
      #radio操作函数
          def radiobuttonState(self):
              radioButton = self.sender()
              print(radioButton.text())
      
              if radioButton.isChecked() == True:
                  print('<' + radioButton.text() + '> 被选中')
              else:
                  print('<' + radioButton.text() + '> 被取消选中状态')
      
      #Qslier放大缩小函数
          def QslidervalueChange(self):
              print('当前值:%s' % self.sender().value())
              size = self.sender().value()
              self.ui.labelQslier.setFont(QFont('Arial' , size))
      
      #计数值函数
          def spinvalueChange(self):
              self.ui.labelspin.setText('当前值:' + str(self.ui.spinBox.value()))
      
      #Qedittext文本框操作函数
          @QtCore.pyqtSlot()#通过控件名称自动链接到函数
          def on_pushButtonwrite_clicked(self):
              self.ui.textEdit.setPlainText('Hello World,世界你好吗?')
              self.ui.textEdit.insertHtml('<font color="blue" size="5">Hello World</font>')
          def onClick_ButtonToText(self):
              print(self.ui.textEdit.toPlainText())
              print(self.ui.textEdit.toHtml())
      
      #调色板函数,前景和背景颜色设置
          def getColor(self):
              color = QColorDialog.getColor()
              p = QPalette()
              p.setColor(QPalette.WindowText, color)
              self.ui.labelcolor.setPalette(p)
          def getBGColor(self):
              color = QColorDialog.getColor()
              p = QPalette()
              p.setColor(QPalette.Window,color)
              self.ui.labelcolor.setAutoFillBackground(True)
              self.ui.labelcolor.setPalette(p)
      
      #打开图片打开文本文件
          def loadImage(self):
              # fname,_ = QFileDialog.getOpenFileName(self,'打开文件','.','图像文件(*.jpg *.png *.)')
              fname, _ = QFileDialog.getOpenFileName(self, "选取文件",
                                          self.cwd, # 起始路径
                                         "All Files (*);;Text Files (*.txt);;图片(*.jpg);;(*.png );;PDF Files (*.pdf))")
              print(fname)
              if fname == "":
                  print("\n取消选择")
                  return
              img = QImage(fname)
              # self.ui.labelPic.adjustSize() #自动适应图片大小
              # self.ui.labelPic.setPixmap(QPixmap(fname))
               #缩放图像比例和label尺寸
              result = img.scaled(self.ui.labelPic.width(), self.ui.labelPic.height(), Qt.IgnoreAspectRatio,
                                  Qt.SmoothTransformation)
              # self.ui.labelPic.setPixmap(QPixmap("D:/projects/PyQt5/pic/2f9c8b91b3b404c699ebc022cefe3ef6.jpg"))
              self.ui.labelPic.setPixmap(QPixmap.fromImage(result))
      #读text文件
          def loadText(self):
              fname, _ = QFileDialog.getOpenFileName(self, "选取文件",
                                                     self.cwd,  # 起始路径
                                                     "All Files (*);;Text Files (*.txt);;图片(*.jpg);;(*.png );;PDF Files (*.pdf))")
              print(fname)
              if fname == "":
                  print("\n取消选择")
                  return
              f = open(fname,encoding='utf-8',mode='r')
              with f:
                  data = f.read()
                  self.ui.textEdit.setText(data)
      
      #选择多个文件
          def chooseMutiFile(self):
              files, filetype = QFileDialog.getOpenFileNames(self,
                                                             "多文件选择",
                                                             self.cwd,  # 起始路径
                                                             "All Files (*);;PDF Files (*.pdf);;Text Files (*.txt)")
      
              if len(files) == 0:
                  print("\n取消选择")
                  return
      
              print("\n你选择的文件为:")
              for file in files:
                  print(file)
              print("文件筛选器类型: ", filetype)
      #保存文件
          def saveFile(self):
              fileName_choose, filetype = QFileDialog.getSaveFileName(self,
                                                                      "文件保存",
                                                                      self.cwd,  # 起始路径
                                                                      "All Files (*);;Text Files (*.txt)")
      
              if fileName_choose == "":
                  print("\n取消选择")
                  return
      
              print("\n你选择要保存的文件为:")
              print(fileName_choose)
              print("文件筛选器类型: ", filetype)
      #选择字体
          def getFont(self):
              font, ok = QFontDialog.getFont()
              if ok:
                  self.ui.textEdit.setFont(font)
      
      #选择字体
          def fontchange(self):
              font = self.ui.fontComboBox.currentFont()
              self.ui.textEdit.setFont(font)
              print(self.ui.fontComboBox.currentFont().toString())
      
      #获取输入值
          def getItem(self):
              items = ('C','C++','Ruby','Python','Java')
              item, ok =QInputDialog.getItem(self,'请选择编程语言','语言列表',items)
              if ok and item:
                  self.ui.textEdit.setText(item)
          def getText(self):
              text, ok =QInputDialog.getText(self,'文本输入框','输入姓名')
              if ok and text:
                  self.ui.textEdit.setText(text)
          def getInt(self):
              num, ok =QInputDialog.getInt(self,'整数输入框','输入数字')
              if ok and num:
                  self.ui.textEdit.setText(str(num))
      
      #消息提示对话框
          def showDialog(self):
              text = self.sender().text()
              if text == '关于对话框':
                  QMessageBox.about(self,'关于','这是一个关于对话框')
              elif text == '消息对话框':
                  reply = QMessageBox.information(self,'消息','这是一个消息对话框', QMessageBox.Yes | QMessageBox.No,QMessageBox.Yes)
                  print(reply == QMessageBox.Yes)
              elif text == '警告对话框':
                  QMessageBox.warning(self,'警告','这是一个警告对话框',QMessageBox.Yes | QMessageBox.No,QMessageBox.Yes)
              elif text == '错误对话框':
                  QMessageBox.critical(self,'警告','这是一个警告对话框',QMessageBox.Yes | QMessageBox.No,QMessageBox.Yes)
              elif text == '提问对话框':
                  QMessageBox.question(self,'警告','这是一个警告对话框',QMessageBox.Yes | QMessageBox.No,QMessageBox.Yes)
      
      #打开新窗口Dialog,
          def newQDialog(self):
              dialog = NewDialog.Dialog1()
              # dialog.setWindowModality(Qt.ApplicationModal)
              dialog.ui.datetime_inner.dateTimeChanged.connect(self.deal_inner_slot)#通过调用子窗口控件获取值,最好不用 这种方式
              # 连接子窗口的自定义信号与主窗口的槽函数,这种方式减少冗余
              dialog.Signal_OneParameter.connect(self.deal_emit_slot)
              dialog.exec()
          def deal_inner_slot(self, date):
              self.ui.lineEdit_inner.setText(date.toString())
          def deal_emit_slot(self, dateStr):
              self.ui.lineEdit_emit.setText(dateStr)
      
      #dial旋钮控件
          def dialvalueChange(self):
              print('当前值:%s' % self.sender().value())
              size = self.sender().value()
              self.ui.labelQslier.setFont(QFont('Arial', size))
      
      #键盘按键操作函数
          def keyPressEvent(self, e):
              if e.key() == Qt.Key_Escape:
                  self.close()
                  print("按下键盘esc键")
              elif e.key() == Qt.Key_Alt:
                  self.setWindowTitle("按下Alt键")
                  print("按下键盘Alt键")
      
              elif e.key() == Qt.Key_A:
                  self.setWindowTitle("按下A键")
                  print("按下键盘A键")
              elif e.key() == Qt.Key_1:
                  self.setWindowTitle("按下1键")
                  print("按下键盘1键")
                  self.ui.statusBar.showMessage("按下键盘1键",5000)
      
      #树的响应事件函数
          def onTreeClicked(self, index):
              item = self.ui.treeWidget.currentItem()
              print(index.row())
              print('key=%s,value=%s' % (item.text(0), item.text(1)))
      
              # 添加节点
      
          def addNode(self):
              print('添加节点')
              item = self.ui.treeWidget.currentItem()
              print(item)
              node = QTreeWidgetItem(item)
              node.setText(0, '新节点')
              node.setText(1, '新值')
      
          def updateNode(self):
              print('修改节点')
              item = self.ui.treeWidget.currentItem()
              item.setText(0, '修改节点')
              item.setText(1, '值已经被修改')
      
          def deleteNode(self):
              print('删除节点')
              item = self.ui.treeWidget.currentItem()
              root = self.ui.treeWidget.invisibleRootItem()
              for item in self.ui.treeWidget.selectedItems():
                  (item.parent() or root).removeChild(item)

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