第一天将会学习基础的Hello world 案例
案例1:(构造一个简单的窗口)
import sys
from PyQt5.QtWidgets import QApplication, QWidget
if __name__ == '__main__':
app = QApplication(sys.argv)
#sys.argv是一组命令行参数的列表。Python可以在shell里运行,
#这个参数提供#对脚本控制的功能。
w = QWidget()
#QWidget空间是一个用户界面的基本空间,它提供了基本的应用构造器。
#默认情况下,构造器是没有父级的,没有父级的构造器被称为窗口(window)。
w.resize(250, 150)
#resize()方法能改变控件的大小,这里的意思是窗口宽250px,高150px。
w.move(300, 300)
#move()是修改控件位置的的方法。它把控件放置到屏幕坐标的(300, 300)的位置。
w.setWindowTitle('Simple')
w.show()
#show()能让控件在桌面上显示出来。控件在内存里创建,之后才能在显示器上显示出来。
sys.exit(app.exec_())
#sys.exit()方法能确保主循环安全退出。外部环境能通知主控件怎么结束。
这是做出的截图
案例2:(创建带图标的窗口)
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()#使用initUI()方法创建一个GUI
def initUI(self):
#下面3个方法均继承自QWidget类
self.setGeometry(300, 300, 300, 220)
#setGeometry是resize()和move()的合体,前面尺寸后面位置
self.setWindowTitle('Icon')#窗口的名字
self.setWindowIcon(QIcon('web.png'))
#设置窗口图标
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
这是效果图
案例3:(创建提示框)
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))
#设置字体为 10px的SansSerif字体。
self.setToolTip('This is a<b>QWidget</b> widget')
#创建提示框1
btn=QPushButton('Button',self)
#创建一个标有button的按钮
btn.setToolTip('This is a <b>QPushButton</b> widget')
#为按钮添加一个提示框2并显示This is ....
btn.resize(btn.sizeHint())
#调整大小,sizeHint()提供了一个默认的按钮大小
btn.move(50,50)
self.setGeometry(300,300,300,300)
self.setWindwoTitlw('ToolTips')
self.show()
if __name__=='__main__':
app=QApplication(sys.argv)
ex=Example()
sys.exit(app.exec_())
#本例中创建了两个提示框
这是效果图
案例4:(关闭窗口,将会使用QPushButton组件类)
#QPushButton(string text,QWidget parent=None)
#text是想要显示的按钮名称,parent参数是放在按钮上的组件
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)
#创建了一个继承自QPushButton的按钮,显示quit
qbtn.clicked.connect(QCoreApplication.instance().quit)
#QCoreApplication能添加删除所有事件,instance创建了一个实例
qbtn.resize(qbtn.sizeHint())
qbtn.move(50,50)
self.setGeometry(500,500,300,300)
self.setWindowTitle('Quit button')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
这是结果部分:
案例5:(消息盒子)
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, 150)
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()
#点击Yes则关闭否则忽略
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
效果展示:
案例6:(窗口居中)
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,150)
self.center() #调用下面的方法
self.setWindowTitle('Center')
self.show()
def center(self):
qr=self.frameGeometry()#得到主窗口的大小4
cp=QDesktopWidget().availableGeometry().center()
#得到显示器的分辨率并得到中间点的位置
qr.moveCenter(cp)
#将自己的中心点放到qr的中心点
self.move(qr.topLeft())
#将窗口的左上角移动到qr的左上角
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
本例没有示意图,会出现一个窗口,出现的时候会处于居中的状态
创建菜单和工具栏
菜单是一组位于菜单栏的命令,工具栏是应用的一些常用工具按钮。
状态栏是用来显示应用的状态信息的组件
案例1:(创建状态栏)
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.statusBar().showMessage('Ready')
#创建状态栏并显示Ready信息
self.setGeometry(300,300,500,500)
self.setWindowTitle('Statusbar')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
案例2:(创建菜单栏)
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
exit=QAction(QIcon('exit.png'),'Exit',self)
#QAction是菜单栏、工具栏或者快捷键的动作的组合
#创建了一个图标、一个exit的标签
exit.setShortcut('Ctrl+Q')
#创建快捷键
exit.setStatusTip('Exit application')
#创建状态栏
exit.triggered.connect(qApp.quit)
self.statusBar() #创建状态栏
menubar=self.menuBar()#创建菜单栏
fileMenu=menubar.addMenu('File')
#为菜单栏添加file信息
fileMenu.addAction(exit)
#并关联了点击退出应用的事件
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Menubar')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
效果展示:
案例3:(创建工具栏)
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
exitAction = QAction(QIcon('exit24.png'), 'Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.triggered.connect(qApp.quit)
#这里使用了一个行为对象,该对象绑定了图标,标签和一个快捷键
self.toolbar = self.addToolBar('Exit')
#创建一个工具栏,
self.toolbar.addAction(exitAction)
#关联了点击退出的对象exitAction
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Toolbar')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
最后将以上三种案例进行组合:
mport sys
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
textEdit = QTextEdit()
self.setCentralWidget(textEdit)
exitAction = QAction(QIcon('exit24.png'), 'Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit application')
exitAction.triggered.connect(self.close)
self.statusBar()
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)
toolbar = self.addToolBar('Exit')
toolbar.addAction(exitAction)
self.setGeometry(300, 300, 350, 250)
self.setWindowTitle('Main window')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
运行结果: