pyqt5中的常用模块
模块 | 描述 |
---|---|
QtWidgets | 提供了一系列的 UI 组件,如按钮、文本框、窗口等。 |
QtGui | 包含了绘图、颜色、字体等图形相关的功能。 |
QtCore | 提供了核心的非图形功能,如事件处理、定时器等。 |
QtNetwork | 用于网络编程,支持TCP、UDP等协议。 |
QtSql | 提供了数据库访问功能,支持多种数据库。 |
QtMultimedia | 处理多媒体相关的功能,如音频、视频。 |
QtPrintSupport | 提供打印支持的模块。 |
QtWebEngine | 用于集成 Web 内容到应用程序中。 |
QtXml | 处理 XML 数据的模块。 |
QtSvg | 用于处理 SVG 图形的模块。 |
QtWebSockets | 提供了 WebSocket 支持。 |
QtTest | 用于编写单元测试的模块。 |
QtDesigner | 用于创建和编辑 Qt 界面的可视化工具。 |
第一个窗口
import sys
from PyQt5.QtWidgets import QMainWindow,QApplication,QWidgetclass FirstMainWin(QMainWindow):def __init__(self):super(FirstMainWin,self).__init__()#设置窗口尺寸self.resize(300,300)#设置窗口标题self.setWindowTitle("第一个pyqt窗口")
if __name__=="__main__":app=QApplication(sys.argv)firstWin=FirstMainWin()firstWin.show()sys.exit(app.exec_())
- 程序预览
QMainWindow
用于创建主窗口,QApplication
管理应用程序的控制流,而QWidget
是所有用户界面对象的基类。
每个 PyQt5 应用都必须创建一个应用对象,即QApplication类的实例,这是任何PyQt5应用程序的起点。firstWin是实例化了的FirstMainWin类,并通过show()方法显示了主窗口。最后,通过sys.exit(app.exec_())进入应用程序的主事件循环,确保在用户关闭窗口时应用程序能够干净地退出。
窗口居中
mport sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QDesktopWidget
class CenterWindow(QMainWindow):def __init__(self):super(CenterWindow, self).__init__()# 设置窗口尺寸self.resize(300, 300)# 设置窗口标题self.setWindowTitle("窗口居中")# 窗口居中def center(self):# 获取屏幕坐标screen = QDesktopWidget().screenGeometry()# 获取窗口坐标size = self.geometry()newLeft = (screen.width() - size.width()) / 2newTop = (screen.height() - size.height()) / 2self.move(newLeft, newTop)if __name__ == "__main__":app = QApplication(sys.argv)firstWin = CenterWindow()firstWin.show()firstWin.center()sys.exit(app.exec_())
关闭窗口
关闭一个窗口最直接的方式就是点击标题栏的那个叉,这个例子展示的是通过点击一个按钮关闭窗口,这会提前接触到一下信号和槽的知识。
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QDesktopWidget
from PyQt5.QtWidgets import QPushButtonclass CloseWindow(QMainWindow):def __init__(self):super(CloseWindow, self).__init__()# 设置窗口尺寸self.resize(300, 300)# 添加buttonself.button = QPushButton("退出应用程序",self)# 关联信号和槽self.button.clicked.connect(self.onClick_Button)def onClick_Button(self):sender = self.sender()print(sender.text() + "按钮按下")app = QApplication.instance()app.quit()if __name__ == "__main__":app = QApplication(sys.argv)Win = CloseWindow()Win.show()sys.exit(app.exec_())
- 程序预览
创建按钮使用了QPushButton(string text, QWidget parent = None)
函数,第一个参数text是按钮上显示的文字,第二个参数指明按钮放在那个组件上
self.button.clicked.connect(self.onClick_Button)
这一行代码建立了一个信号(Signal)和槽(Slot)的连接。在PyQt中,信号和槽是用于处理事件和响应的机制。
简单介绍一下信号和槽
- 信号(Signal): 是一个对象发出的事件,比如按钮被点击、文本框内容改变等。在这里,clicked 是QPushButton类的一个信号,按钮被点击时发出。
- 槽(Slot): 是一个接收信号的方法,用于处理信号触发的事件。在这里,self.onClick_Button 是一个槽,是在按钮被点击发出clicked信号后要执行的方法。
通过使用 connect
方法,告诉 程序当按钮的 clicked
信号被触发时,调用 self.onClick_Button
方法。
onClick_Button
方法被调用时,它获取了发出信号的对象(通过self.sender()
获取),打印出按钮的文本,并通过 QApplication.instance().quit()
退出应用程序。QApplication.instance()
是 PyQt 中的一个静态方法,它返回当前运行的应用程序的唯一实例序。
消息盒子
QMessageBox
通常用于向用户提供一些信息、询问确认或警告等。它是基于 QDialog
类的一种简便的实现,提供了几种预定义的对话框类型。使用时要从PyQt5.QtWidgets
中导入QMessageBox
模块
下面是一些常见的 QMessageBox
- 信息框 (Information Box):
# 显示信息框
QMessageBox.information(None, '标题', '这是一条信息')
- 警告框 (Warning Box):
# 显示警告框
QMessageBox.warning(None, '标题', '这是一条警告')
- 错误框 (Error Box):
# 显示错误框
QMessageBox.critical(None, '标题', '发生了错误')
- 提问框 (Question Box):
# 显示提问框
result = QMessageBox.question(None, '标题', '确定要执行吗?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if result == QMessageBox.Yes:print('用户选择了确定')
else:print('用户选择了取消')
import sys
from PyQt5.QtWidgets import QWidget, QMessageBox, QApplicationclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setGeometry(300, 300, 250, 150)self.setWindowTitle('消息盒子')self.show()def closeEvent(self, event):reply = QMessageBox.question(self, 'Message',"确定要退出吗?", QMessageBox.Yes |QMessageBox.No, QMessageBox.No)if reply == QMessageBox.Yes:event.accept()else:event.ignore()if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())
- 程序预览
创建提示框
创建提示框需要导入QToolTip和QFont模块
QToolTip 用于显示工具提示信息,提供用户鼠标悬停在组件上时的额外信息,通过使用setToolTip即可为组件设置提示信息,这里导入QFont模块是为了给提示框中的文字设置字体。
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QPushButton, QToolTip
from PyQt5.QtGui import QFontclass TooltipWin(QMainWindow):def __init__(self):super(TooltipWin, self).__init__()self.initUI()def initUI(self):QToolTip.setFont(QFont('楷体', 12))self.setToolTip('我是一个窗口')# 设置窗口位置和尺寸self.setGeometry(300, 300, 640, 480)# 设置窗口标题self.setWindowTitle("ToolTip")self.btn=QPushButton('button',self)self.btn.setToolTip('我是一个按钮')if __name__ == "__main__":app = QApplication(sys.argv)firstWin = TooltipWin()firstWin.show()sys.exit(app.exec_())
-
程序预览