module | statement |
---|---|
QtWidgets | 包含了一系列创建桌面应用的UI元素 |
QtMultimedia | 包含了处理多媒体的内容和调用摄像头API的类 |
QtBluetooth | 包含了查找和连接蓝牙的类 |
QtNetwork | 含了网络编程的类,这些工具能让TCP/IP和UDP开发变得更加方便和可靠 |
QtPositioning | 包含了定位的类,可以使用卫星、WiFi甚至文本 |
Enginio | 包含了通过客户端进入和管理Qt Cloud的类 |
QtWebSockets | 包含了WebSocket协议的类 |
QtWebKit | 包含了一个基WebKit2的web浏览器 |
QtWebKitWidgets | 包含了基于QtWidgets的WebKit1的类。 |
QtXml | l包含了处理xml的类,提供了SAX和DOM API的工具 |
QtSvg | 提供了显示SVG内容的类,Scalable Vector Graphics (SVG)是一种是一种基于可扩展标记语言(XML),用于描述二维矢量图形的图形格式 |
QtSql | 提供了处理数据库的工具 |
QtTest | 提供了测试PyQt5应用的工具。 |
from PyQt5.QtWidgets import QApplication,QWidget
import sys
if __name__ == '__main__':
app = QApplication(sys.argv)
w = QWidget()
w.resize(250,250)
w.move(300,300)
w.setWindowTitle('Hello World')
w.show()
sys.exit(app.exec_())
说明:
QApplication
和QWidget
在pyqt5.QtWidgets里。这是一个过程式编程QApplication
是应用对象,必须创建QWidget
控件是用户界面的基本控件,提供基本控件的构造器。没有父级的构造器称为窗口。sys.argv
是一组命令行参数的列表。Python可以在shell里运行,这个参数提供对脚本控制的功能。move
函数指左上角移位到(300,300)点(左上角算0,0点)- 最后,我们进入了应用的主循环中,事件处理器这个时候开始工作。主循环从窗口上接收事件,并把事件派发到应用控件里。当调用exit()方法或直接销毁主控件时,主循环就会结束。sys.exit()方法能确保主循环安全退出。外部环境会收到主控件如何结束的信息。
exec_()之所以有个下划线,是因为exec是一个Python的关键字。
from PyQt5.QtWidgets import QApplication,QWidget
from PyQt5.QtGui import QIcon
import sys
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300,300,250,250) # move + resize
self.setWindowTitle('Icon')
self.setWindowIcon(QIcon('img/icon.png'))
self.show()
if __name__=='__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
说明:
- 这个是面向对象编程,创建类调用,类继承自
QWidget
。调用两个构造器,一个是类本身,一个是类继承的super()构造器方法返回父级的对象。 - 使用
self.initUI()
创建一个GUI, initUI
的方法都继承自QWidget,setGeometry
是move
和resize
的结合体,前两个参数为坐标,后两个参数为窗口大小setWindowIcon(QIcon(string))
添加图标,创建一个QIcon对象,然后接受路径作为参数显示图标。
效果:
import sys
from PyQt5.QtWidgets import (QWidget, QToolTip,
QPushButton, QApplication)
from PyQt5.QtGui import QFont
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
QToolTip.setFont(QFont('SansSerif',10)) #字体
self.setToolTip('This is a QWidget widget')
btn = QPushButton('Button',self)
btn.setToolTip('This is a QPushButton widget')
btn.resize(btn.sizeHint())
btn.move(50,50)
self.setGeometry(300,300,250,250)
self.setWindowTitle('ToolTips')
self.show()
if __name__=='__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
说明:
QToolTip.setFont(QFont('SansSerif',10))
,QToolTip
为提示框,字体为10 px的SansSerifself.setToolTip
创建富文本框的提示内容QPushButton()
创建按钮,并为按钮创建提示内容
效果:
import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
from PyQt5.QtCore import QCoreApplication
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
qbtn = QPushButton('Quit',self)
qbtn.clicked.connect(QCoreApplication.instance().quit)
qbtn.resize(qbtn.sizeHint())
qbtn.move(50,50)
self.setGeometry(300,300,250,250)
self.setWindowTitle('Quit')
self.show()
if __name__=='__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
说明:
QPushButton(string text, QWidget parent = None)
parent为父类,self就是说父类是自身。qbtn.clicked.connect(QCoreApplication.instance().quit)
事件传递系统在pyqt5内建的single和slot机制里。点击按钮,就会有反应。
QCoreApplication
包含事件主循环,QCoreApplication
在QApplication
里.instance()
创建实例,点击事件之后就会和quit函数绑定在一起。
import sys
from PyQt5.QtWidgets import QWidget, QMessageBox, QApplication
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300,300,250,250)
self.setWindowTitle('Message Box')
self.show()
def closeEvent(self,event):
reply = QMessageBox.question(self,'Message','Are you sure to quit?',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_())
说明:
- 如果关闭QWidget,就会产生一个QCloseEvent,并且把它传入到closeEvent函数的event参数中。改变控件的默认行为,就是替换掉默认的事件处理,就是修改closeEvent函数
QMessageBox
消息框,第一个字符串是消息框标题,第二个字符串是提示内容,然后是消息框的按钮,最后一个参数是默认按钮。- 返回值返回到reply里,如果YES,则接受响应,关闭事件。
效果:
import sys
from PyQt5.QtWidgets import QWidget, QDesktopWidget, QApplication
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.resize(250,250)
self.center()
self.setWindowTitle('Centerr')
self.show()
def center(self):
qr = self.frameGeometry() #主窗口所在框架
cp = QDesktopWidget().availableGeometry().center() #获得显示器分辨率,然后得到屏幕中间的点
qr.moveCenter(cp) #主窗口框架中心点移到屏幕中心点
self.move(qr.topLeft()) #主窗口左上角移到框架的左上角
if __name__=='__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
说明:
QtGui.QDesktopWidget
提供了用户的桌面信息,包括屏幕的大小qr = self.frameGeometry()
获得主窗口所对应的框架QDesktopWidget().availableGeometry().center()
获得屏幕分辨率然后得到中心点qr.moveCenter(cp)
主框架中心点移到屏幕中心点
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)