PyQt5学习笔记

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

PyQt5学习笔记这是Python3.x和PyQt5的学习教程。大部分为我从鱼c工作室网站上的一个教程上看到的,也有一些我自己的心得与批注。上面更为详细与具体。目前来说PyQt的资料很少,书也只是国外人写的PyQt4的。我自己看的就是PythonQtGUI快速编程,讲的很细致,但版本不太好。这个差不多是最好的PyQt5教程吧,程序亲测可用。1.1第一个窗口程序#-*-coding:utf-8-*-第一个程序fromPyQt5importQtWidgetsimportsysapp=QtWidgets.QApplication(sys.argv)first_window=QtWidgets.QWidget()first_window.resize(400,300)//窗口大小first_window.setWindowTitle(我的第一个程序)//标题first_window.show()//显示图像sys.exit(app.exec_())//事件主循环导入模块Pyqt程序都有个Application对象1.2设置程序图标#-*-coding:utf-8-*-图标importsysfromPyQt5importQtWidgets,QtGuiclassIcon(QtWidgets.QWidget):def__init__(self,parent=None):QtWidgets.QWidget.__init__(self,parent)self.setGeometry(300,300,250,150)//该函数设置窗口位置和窗口大小self.setWindowTitle(图标)//设置程序标题self.setWindowIcon(QtGui.QIcon(r'sample.ico'))//路径,设置程序图标app=QtWidgets.QApplication(sys.argv)icon=Icon()icon.show()sys.exit(app.exec_())面向对象编程最重要就就是类,属性,方法。这个程序,Icon类继承QtWidgets.QWidget类。因此我们必须调用两个构造函数——Icon的构造函数和继承类QtGui.QWidget类的构造函数俩个构造函数2.3显示提示信息#-*-coding:utf-8-*-悬停提示信息importsysfromPyQt5importQtWidgets,QtCore,QtGuiclassTooltip(QtWidgets.QWidget):def__init__(self,parent=None):QtWidgets.QWidget.__init__(self,parent)self.setGeometry(835,465,250,150)self.setWindowTitle(提示信息)self.setToolTip(ThisisabQWidgetbwidget)#QtWidgets.QToolTip.setFont(QtGui.QFont(Times,10))//设置提示字体app=QtWidgets.QApplication(sys.argv)tooltip=Tooltip()tooltip.show()sys.exit(app.exec_())创建工具提示,则需要调用setToolTip()方法。该方法接受丰富的文本格式参数。因为默认的QToolTip字体看起来比较糟糕,我们可以通过上面的语句设置想要的字体和字体大小。另外,有鱼油提到直接在setToolTip方法传入的字符串中可以通过应用html语言设置字体和字体大小2.5消息窗口(退出时消息提示)#-*-coding:utf-8-*-消息窗口示例importsysfromPyQt5importQtWidgets,QtGui,QtCoreclassMessageBox(QtWidgets.QWidget):def__init__(self,parent=None):QtWidgets.QWidget.__init__(self,parent)self.setGeometry(300,300,250,150)self.setWindowTitle(消息窗口演示程序)defcloseEvent(self,event):reply=QtWidgets.QMessageBox.question(self,'确认退出','你确定要退出么?',QtWidgets.QMessageBox.Yes,QtWidgets.QMessageBox.No)ifreply==QtWidgets.QMessageBox.Yes:event.accept()else:event.ignore()app=QtWidgets.QApplication(sys.argv)qb=MessageBox()qb.show()sys.exit(app.exec_())如果我们关闭QWidget窗口,QCloseEvent事件就会被触发。要改变原有的wdiget行为阻止查窗口的关闭,我们就需要重新实现closeEvent()方法。在replay变量中,第一个字符串参数'确认退出'在消息窗口的标题栏显示。第二个字符串参数'你确定要退出么?'以对话的形式显示在消息窗口中。返回的结果被保存在reply变量中。显示yes/no的消息窗口2.6将消息放在屏幕中心#-*-coding:utf-8-*-窗口置中importsysfromPyQt5importQtWidgetsclassCenter(QtWidgets.QWidget):def__init__(self,parent=None):QtWidgets.QWidget.__init__(self,parent)self.setWindowTitle(窗口置中程序)self.resize(250,150)self.center()defcenter(self):screen=QtWidgets.QDesktopWidget().screenGeometry()size=self.geometry()self.move((screen.width()-size.width())/2,(screen.height()-size.height())/2)app=QtWidgets.QApplication(sys.argv)center=Center()center.show()sys.exit(app.exec_())3PyQt5中的菜单和工具栏3.1主窗口QMainWindow类用来创建应用程序的主窗口。通过该类,我们可以创建一个包含状态栏、工具栏和菜单栏的经典应用程序框架3.2状态栏#-*-coding:utf-8-*-状态栏程序importsysfromPyQt5importQtWidgetsclassMainWindow(QtWidgets.QMainWindow):def__init__(self):super(MainWindow,self).__init__()#继承self.resize(250,150)self.setWindowTitle(状态栏程序示例)self.statusBar().showMessage(就绪)app=QtWidgets.QApplication(sys.argv)main_window=MainWindow()main_window.show()sys.exit(app.exec_())所有的类在创建时都会先调用构造函数(python中就是__init__())将实例按照构造函数的操作先进行初始化,继承了其它类的类,在构造函数中,先要构造他的父类,在之前的程序中,我们都是直接调用父类的__init__()方法来完成父类的构造,但是有一种更安全的方法就是用关键字super来完成。super(MainWindow,self).__init__()我们可以这样理解:super(MainWindow,self)首先找到MainWindow的父类(就是QtWidgets.QMainWindow),然后把类MainWindow的对象self转换为类QtWidgets.QMainWindow的对象,然后“被转换”的类A对象调用自己的__init__函数。考虑到super中只有指明子类的机制,因此,在多继承的类定义中,通常我们保留使用之前代码中的方法。3.3菜单栏#-*-coding:utf-8-*-菜单栏importsysfromPyQt5importQtWidgets,QtGuiclassMainWindow(QtWidgets.QMainWindow):def__init__(self):super(MainWindow,self).__init__()self.resize(250,150)self.setWindowTitle(菜单栏示例)exit_menu=QtWidgets.QAction(QtGui.QIcon(r1.ico),退出,self)#菜单栏上快捷图标exit_menu.setShortcut(Ctrl+Q)#快捷键“Ctrl+Q”exit_menu.setStatusTip(退出程序)#状态提示文本设置为“退出程序”exit_menu.triggered.connect(QtWidgets.qApp.quit)#信号槽连接self.statusBar()#返回QmainWindow的QStatusBar(第一次调用时创建)menubar=self.menuBar()file=menubar.addMenu(文件)file.addAction(exit_menu)app=QtWidgets.QApplication(sys.argv)mainwindow=MainWindow()mainwindow.show()sys.exit(app.exec_())首先我们使用QMainWindow类的menuBar()方法创建一个菜单栏。然后使用addMenu()方法添加一个菜单。最后我们把动作对象(这里是exit_menu)添加到file菜单中。综合示例#-*-coding:utf-8-*-我的程序importsysfromPyQt5importQtWidgets,QtGuiclassMainWindow(QtWidgets.QMainWindow):def__init__(self):super(MainWindow,self).__init__()self.resize(350,250)self.setWindowTitle(我的程序)text_edit=QtWidgets.QTextEdit()#QTextEdit多行文本框self.setCentralWidget(text_edit)#中心放置exit_action=QtWidgets.QAction(QtGui.QIcon(rsample.png),退出,self)#图标exit_action.setStatusTip(退出程序)#状态提示exit_action.setShortcut(Ctrl+Q)#快捷键exit_action.triggered.connect(QtWidgets.qApp.quit)#信号槽连接self.statusBar()#状态栏self.menu_bar=self.menuBar()#菜单栏file=self.menu_bar.addMenu(文件)#菜单栏添加“文件”file.addAction(exit_action)#添加“文件”的相关动作self.toolbar=self.addToolBar(退出)#工具栏self.toolbar.addAction(exit_action)#添加工具栏的动作app=QtWidgets.QApplication(sys.argv)main_window=MainWindow()main_window.show()sys.ex

1 / 55
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功