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