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)
浙公网安备 33010602011771号