建设网站主机免费版,网站建设工具有哪些,window服务器如何做网站访问,深圳住房和建设局网站融悦居前言
嗨喽#xff0c;大家好呀~这里是爱看美女的茜茜呐 一、什么是PyQt6? 简单介绍一下PyQt6
1、基础简介
PyQt6 Digia 公司的 Qt 程序的 Python 中间件。Qt库是最强大的GUI库之一。
PyQt6的官网#xff1a;www.riverbankcomputing.co.uk/news。
PyQt6是由Riverbank Co…前言
嗨喽大家好呀~这里是爱看美女的茜茜呐 一、什么是PyQt6? 简单介绍一下PyQt6
1、基础简介
PyQt6 Digia 公司的 Qt 程序的 Python 中间件。Qt库是最强大的GUI库之一。
PyQt6的官网www.riverbankcomputing.co.uk/news。
PyQt6是由Riverbank Computing公司开发的
PyQt6 是基于 Python 的一系列模块。
它是一个多平台的工具包可以在包括Unix、Windows和Mac OS在内的大部分主要操作系统上运行。
PyQt6 有两个许可证开发人员可以在 GPL 和商业许可之间进行选择。
2、安装 PyQt6
pip install PyQt6
3、PyQt6 模块
PyQt6 类是由一系列模块组成的包括如下的模块 QtCore QtGui QtWidgets QtDBus QtNetwork QtHelp QtXml QtSvg QtSql QtTest
3.1 界面框架部分
主类
QLayout
继承类 QGridLayout 网格布局 QBoxLayout简单的上下布局 QStackedLayout 可切换widget的布局 FlowLayout
3.2 界面组件部分其实也是Widget类 button label等
3.3 界面样式部分 color size font Icon
3.4 界面交互部分 action event signal slot connect
3.5 概念之间关系
QWidget 作为页面的主体挂载layout(框架)框架添加页面的组件通过 action(动作类似于点击)event(事件)signal(信号)slot信号槽connect动作绑定产生交互 通过样式类类似于 Icon(图标)大小颜色字体等修改界面的细节 widget 上需要有layoutlayout可以继续添加widget可以一直加下去
3.6 学习文档
学习文档参考First programs in PyQt6 - center window, tooltip, quit button, message box 更多精彩机密、教程尽在下方赶紧点击了解吧~
素材、视频教程、完整代码、插件安装教程我都准备好了直接在文末名片自取就可 二、编写一个简单的pyqt6程序
1、简介
编写一个简单的pyqt6程序
2、知识点 PyQt6 sys
3、实战
3.1 创建 python 文件
#引入类
from PyQt6.QtWidgets import (QApplication, QDialog, QPushButton, QHBoxLayout, QMessageBox
)
import sysif __name__ __main__:app QApplication(sys.argv)window QDialog()window.resize(400, 300)#弹出窗口def show_msg():QMessageBox.information(window, 信息提示, 你点击了我)需要python教程、资料、解答等wxqian97378免费获取hbox QHBoxLayout()button QPushButton(点击我)button.clicked.connect(show_msg)hbox.addWidget(button)window.setLayout(hbox)
#展示窗口window.show()sys.exit(app.exec())3.2 运行结果 三、PyQt6如创建菜单栏
1、主要知识点 文件读写 基础语法 PyQt6 sys
2、实战
菜单栏在GUI应用程序中很常见它是位于各种菜单中的一组命令。
(Mac OS 对菜单栏的处理是不同的要得到类似的结果我们可以添加下面这行: menubar.setNativeMenuBar(False)
import sys
from PyQt6.QtWidgets import QMainWindow, QApplication
from PyQt6.QtGui import QIcon, QActionclass Example(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):exitAct QAction(QIcon(exit.png), Exit, self)exitAct.setShortcut(CtrlQ)exitAct.setStatusTip(Exit application)exitAct.triggered.connect(QApplication.instance().quit)self.statusBar()menubar self.menuBar()fileMenu menubar.addMenu(File)fileMenu.addAction(exitAct)self.setGeometry(300, 300, 350, 250)self.setWindowTitle(Simple menu)self.show()def main():app QApplication(sys.argv)ex Example()sys.exit(app.exec())if __name__ __main__:main()上门的示例中创建了有一个菜单的菜单栏。
这个菜单命令是终止应用也绑定了快捷键 CtrlQ。
示例中也创建了一个状态栏。
exitAct QAction(QIcon(exit.png), Exit, self)
exitAct.setShortcut(CtrlQ)
exitAct.setStatusTip(Exit application)QAction 是行为抽象类包括菜单栏工具栏或自定义键盘快捷方式。
在上面的三行中创建了一个带有特定图标和 ‘Exit’ 标签的行为。
此外还为该行为定义了一个快捷方式。第三行创建一个状态提示当我们将鼠标指针悬停在菜单项上时状态栏中就会显示这个提示。
exitAct.triggered.connect(QApplication.instance().quit)当选择指定的行为时触发了一个信号这个信号连接了 QApplication 组件的退出操作这会终止这个应用程序。
menubar self.menuBar()
fileMenu menubar.addMenu(File)
fileMenu.addAction(exitAction)menuBar 方法创建了一个菜单栏然后使用 addMenu 创建一个文件菜单使用 addAction 创建一个行为。
四、PyQt6创建一个状态栏
1、主要知识点 文件读写 基础语法 PyQt6 sys
2、实战
状态栏是显示状态信息的小部件。
import sys
from PyQt6.QtWidgets import QMainWindow, QApplicationclass Example(QMainWindow):# 需要python教程、资料、解答等wxqian97378免费获取def __init__(self):super().__init__()self.initUI()def initUI(self):self.statusBar().showMessage(Ready)self.setGeometry(300, 300, 350, 250)self.setWindowTitle(Statusbar)self.show()def main():app QApplication(sys.argv)ex Example()sys.exit(app.exec())if __name__ __main__:main()使用 QMainWindow 创建状态栏
self.statusBar().showMessage(‘Ready’)
使用 QtGui.QMainWindow 方法创建状态栏该方法的创建了一个状态栏并返回statusbar对象再调用 showMessage 方法在状态栏上显示一条消息。
五、Python 中创建 PyQt6 的事件对象
1、主要知识点 文件读写 基础语法 PyQt6 sys
2、实战
事件对象是一个 Python object包含了一系列描述这个事件的属性具体内容要看触发的事件。
import sys
from PyQt6.QtCore import Qt
from PyQt6.QtWidgets import QWidget, QApplication, QGridLayout, QLabelclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):grid QGridLayout()x 0y 0self.text fx: {x}, y: {y}self.label QLabel(self.text, self)grid.addWidget(self.label, 0, 0, Qt.Alignment.AlignTop)self.setMouseTracking(True)self.setLayout(grid)需要python教程、资料、解答等wxqian97378免费获取self.setGeometry(300, 300, 450, 300)self.setWindowTitle(Event object)self.show()def mouseMoveEvent(self, e):x int(e.position().x())y int(e.position().y())text fx: {x}, y: {y}self.label.setText(text)def main():app QApplication(sys.argv)ex Example()sys.exit(app.exec())if __name__ __main__:main()本例中在标签组件里展示了鼠标的坐标。
self.setMouseTracking(True)鼠标跟踪默认是关闭的鼠标移动时组件只能在鼠标按下的时候接收到事件。
开启鼠标跟踪只移动鼠标不按下鼠标按钮也能接收到事件。
def mouseMoveEvent(self, e):x int(e.position().x())y int(e.position().y())...e 是事件对象它包含了事件触发时候的数据。
通过 position().x() 和 e.position().y() 方法能获取到鼠标的坐标值。
self.text fx: {x}, y: {y}
self.label QLabel(self.text, self)坐标值 x 和 y 显示在 QLabel 组件里。
六、Python 中的 PyQt6事件触发者
1、主要知识点 文件读写 基础语法 PyQt6 sys
2、实战
某些时候需要知道事件的触发者是谁PyQt6 有获取事件触发者的方法。
import sys
from PyQt6.QtWidgets import QMainWindow, QPushButton, QApplicationclass Example(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):btn1 QPushButton(Button 1, self)btn1.move(30, 50)btn2 QPushButton(Button 2, self)btn2.move(150, 50)btn1.clicked.connect(self.buttonClicked)btn2.clicked.connect(self.buttonClicked)self.statusBar()self.setGeometry(300, 300, 450, 350)self.setWindowTitle(Event sender)self.show()def buttonClicked(self):sender self.sender()msg f{sender.text()} was pressedself.statusBar().showMessage(msg)def main():app QApplication(sys.argv)ex Example()sys.exit(app.exec())if __name__ __main__:main()本例中有两个按钮。
buttonClicked 调用触发者方法确定了是哪个按钮触发的事件。
btn1.clicked.connect(self.buttonClicked)
btn2.clicked.connect(self.buttonClicked)两个按钮绑定了同一个插槽。
def buttonClicked(self):sender self.sender()msg f{sender.text()} was pressedself.statusBar().showMessage(msg)在应用的状态栏里显示了是哪个按钮被按下。
七、Python 中 PyQt6 触发信号
1 、主要知识点 文件读写 基础语法 PyQt6 sys
2、实战
QObject 可以主动触发信号。
下面的示例显示了如果触发自定义信号。
import sys
from PyQt6.QtCore import pyqtSignal, QObject
from PyQt6.QtWidgets import QMainWindow, QApplicationclass Communicate(QObject):closeApp pyqtSignal()class Example(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):self.c Communicate()self.c.closeApp.connect(self.close)self.setGeometry(300, 300, 450, 350)self.setWindowTitle(Emit signal)self.show()def mousePressEvent(self, e):self.c.closeApp.emit()def main():app QApplication(sys.argv)ex Example()sys.exit(app.exec())if __name__ __main__:main()创建了一个叫 closeApp 的信号在鼠标按下的时候触发和关闭插槽 QMainWindow 绑定。
class Communicate(QObject):closeApp pyqtSignal()外部 Communicate 类的属性 pyqtSignal 创建信号。
self.c Communicate()
self.c.closeApp.connect(self.close)自定义信号 closeApp 绑定到 QMainWindow 的关闭插槽上。
def mousePressEvent(self, event):self.c.closeApp.emit()在窗口上点击鼠标按钮的时候触发 closeApp 信号程序终止。
八、Python 中 PyQt6 的拖拽操作
1、主要知识点 文件读写 基础语法 PyQt6 sys
2、实战 QDrag QDrag 提供对基于 MIME 的拖放数据传输的支持。 它处理拖放操作的大部分细节。 传输的数据包含在 QMimeData 对象中。
import sysfrom PyQt6.QtWidgets import (QPushButton, QWidget,QLineEdit, QApplication)class Button(QPushButton):def __init__(self, title, parent):super().__init__(title, parent)self.setAcceptDrops(True)def dragEnterEvent(self, e):if e.mimeData().hasFormat(text/plain):e.accept()else:e.ignore()def dropEvent(self, e):self.setText(e.mimeData().text())class Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):edit QLineEdit(, self)edit.setDragEnabled(True)edit.move(30, 65)button Button(Button, self)button.move(190, 65)# 需要python教程、资料、解答等wxqian97378免费获取self.setWindowTitle(Simple drag and drop)self.setGeometry(300, 300, 300, 150)def main():app QApplication(sys.argv)ex Example()ex.show()app.exec()if __name__ __main__:main()示例展示了简单的拖拽操作。
class Button(QPushButton):def __init__(self, title, parent):super().__init__(title, parent)为了完成把文本拖到 QPushButton 部件上我们必须实现某些方法才可以所以这里创建了一个继承自 QPushButton 的 Button 类。
self.setAcceptDrops(True)使用 setAcceptDrops 方法处理部件的释放事件。
def dragEnterEvent(self, e):if e.mimeData().hasFormat(text/plain):e.accept()else:e.ignore()dragEnterEvent 方法定义了我们接受的数据类型————纯文本。
def dropEvent(self, e):self.setText(e.mimeData().text())dropEvent 方法处理释放事件————修改按钮组件的文本。
edit QLineEdit(, self)
edit.setDragEnabled(True)QLineEdit 部件支持拖放操作这里只需要调用 setDragEnabled 方法激活它。
九、Python 中 PyQt6 的拖放按钮组件
1、主要知识点 文件读写 基础语法 PyQt6 sys
2、菜鸟实战
创建文件
import sysfrom PyQt6.QtCore import Qt, QMimeData
from PyQt6.QtGui import QDrag
from PyQt6.QtWidgets import QPushButton, QWidget, QApplicationclass Button(QPushButton):def __init__(self, title, parent):super().__init__(title, parent)def mouseMoveEvent(self, e):if e.buttons() ! Qt.MouseButtons.RightButton:returnmimeData QMimeData()drag QDrag(self)drag.setMimeData(mimeData)drag.setHotSpot(e.position().toPoint() - self.rect().topLeft())dropAction drag.exec(Qt.DropActions.MoveAction)def mousePressEvent(self, e):super().mousePressEvent(e)if e.button() Qt.MouseButtons.LeftButton:print(press)class Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setAcceptDrops(True)self.button Button(Button, self)self.button.move(100, 65)self.setWindowTitle(Click or Move)self.setGeometry(300, 300, 550, 450)def dragEnterEvent(self, e):e.accept()def dropEvent(self, e):position e.position()self.button.move(position.toPoint())e.setDropAction(Qt.DropActions.MoveAction)e.accept()def main():app QApplication(sys.argv)ex Example()ex.show()app.exec()if __name__ __main__:main()本例中窗口里有个 QPushButton鼠标左键点击它会在控制台打印 press’消息鼠标右键可以点击拖拽它。
class Button(QPushButton):def __init__(self, title, parent):super().__init__(title, parent)基于 QPushButton 创建了一个 Button 类并实现了两个 QPushButton 方法mouseMoveEvent 和 mousePressEvent。
mouseMoveEvent 方法是处理拖放操作开始的地方。
if e.buttons() ! Qt.MouseButtons.RightButton:return定义鼠标右键为触发拖拽操作的按钮鼠标左键只会触发点击事件。
drag QDrag(self)
drag.setMimeData(mimeData)drag.setHotSpot(e.position().toPoint() - self.rect().topLeft())创建 QDrag 对象以提供基于 MIME 数据类型的拖拽操作。
dropAction drag.exec(Qt.DropActions.MoveAction)
1
drag 对象的 exec 方法执行拖拽操作。def mousePressEvent(self, e):super().mousePressEvent(e)if e.button() Qt.MouseButtons.LeftButton:print(press)如果鼠标左键点击按钮会在控制台打印 ‘press’ 消息
注意这里在父级上也调用了 mousePressEvent 方法不然按钮按下的动作不会展现出来。
position e.pos() self.button.move(position) dropEvent 方法处理鼠标释放按钮后的操作————把组件的位置修改为鼠标当前坐标。
e.setDropAction(Qt.MoveAction) e.accept() 使用 setDropAction 指定拖放操作的类型————鼠标移动。
尾语
感谢你观看我的文章呐~本次航班到这里就结束啦
希望本篇文章有对你带来帮助 有学习到一点知识~
躲起来的星星也在努力发光你也要努力加油让我们一起努力叭。 最后宣传一下呀~更多源码、资料、素材、解答、交流皆点击下方名片获取呀