Pyqt5系列一Word格式文档下载.docx
- 文档编号:20084499
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:31
- 大小:535.92KB
Pyqt5系列一Word格式文档下载.docx
《Pyqt5系列一Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Pyqt5系列一Word格式文档下载.docx(31页珍藏版)》请在冰豆网上搜索。
utf-8-*-
'
Creatasimplewindow
__author__='
TonyZhu'
importsys
fromPyQt5.QtWidgetsimportQWidget,QApplication
if__name__=='
__main__'
:
app=QApplication(sys.argv)
w=QWidget()
w.show()
w.setWindowTitle("
HelloPyQt5"
)
sys.exit(app.exec_())
运行之后会直接显示一个标题为“HelloPyQt5”的空白窗口。
二第一个PyQt程序
通过下面的一个PyQt5简单例子,来简单了解一下关于如何创建PyQt5的。
具体代码如下:
utf-8-*-
FristPyQt5program
fromPyQt5.QtWidgetsimportQApplication,QWidget,QLabel,QHBoxLayout,QPushButton,QLineEdit,QVBoxLayout,QMessageBox
importsys
classShowWindow(QWidget):
def__init__(self):
super(ShowWindow,self).__init__()
self.initUI()
definitUI(self):
self.inputLabel=QLabel("
Inputyourtext"
)
self.editLine=QLineEdit()
self.printButton=QPushButton("
Print"
self.clearButton=QPushButton("
Clear"
self.printButton.clicked.connect(self.printText)
self.clearButton.clicked.connect(self.clearText)
inputLayout=QHBoxLayout()
inputLayout.addWidget(self.inputLabel)
inputLayout.addWidget(self.editLine)
buttonLayout=QHBoxLayout()
buttonLayout.addWidget(self.printButton)
buttonLayout.addWidget(self.clearButton)
mainLayout=QVBoxLayout()
mainLayout.addLayout(inputLayout)
mainLayout.addLayout(buttonLayout)
self.setLayout(mainLayout)
self.setWindowTitle('
FristWindow'
self.show()
defprintText(self):
text=self.editLine.text()
iftext=='
QMessageBox.information(self,"
EmptyText"
"
Pleaseentertheletter."
else:
PrintSuccess"
Text:
%s"
%text)
defclearText(self):
return
self.editLine.clear()
app=QApplication(sys.argv)
ex=ShowWindow()
运行的结果:
程序运行后的结果
结合代码和运行的结果,分析代码:
Line7~8:
导入了程序运行所必须的模块
Line10:
创建一个ShowWindow类继承QWidget,其中PyQt中非常重要的通用窗口类,是所有用户界面对象的基类,所有和用户界面相关的控件类都是继承自QWidger类。
Line12~14:
def__init__(self):
定义了ShowWindow类的构造函数init,由于ShowWindow继承自QWidgert类,因此在构造函数中调用父类QWidget的构造函数super.init()。
同时在构造函数中调用自定义的初始化函数initUI(),在该函数中初始化GUI中所需各个控件。
Line17~20:
self.inputLabel=QLabel("
self.editLine=QLineEdit()
self.printButton=QPushButton("
self.clearButton=QPushButton("
创建成员:
一个标签(inputLabel),输入框(editLine),两个按钮(printButton,clearButton)
Line22~23:
self.printButton.clicked.connect(self.printText)self.clearButton.clicked.connect(self.clearText)
1
printButton和clearButton点击事件处理的逻辑:
点击printButton之后会调用自定义函数printText()中的处理逻辑;
点击clearButton之后调用自定义函数clearText()中的处理逻辑。
通过connect()方法将点击事件和处理逻辑关联起来
这个涉及到PyQt信号与槽的概念,信号和槽用于对象之间的通信。
当指定事件发生,一个事件信号会被发射。
槽可以被任何Python脚本调用。
当和槽连接的信号被发射时,槽会被调用。
有关信号与槽的概念,在后续的文章中会专门讲解。
Line25~26:
inputLayout=QHBoxLayout()
inputLayout.addWidget(self.inputLabel)
inputLayout.addWidget(self.editLine)
创建一个inputLayout的水平布局(QHBoxLayout),在inputLayout中添加已定义的控件inputLabel和editLine。
QHBoxLayout让添加的控件水平排布
Line29~31:
buttonLayout=QHBoxLayout()
buttonLayout.addWidget(self.printButton)
buttonLayout.addWidget(self.clearButton)
同上创建一个buttonLayout的水平布局(QHBoxLayout),在buttonLayout中添加printButton和clearButton
Line33~35:
mainLayout=QVBoxLayout()
mainLayout.addLayout(inputLayout)
mainLayout.addLayout(buttonLayout)
创建一个mainLayout的垂直布局(QVBoxLayout),在mainLayout中嵌套子布局inputLayout和buttonLayout。
通过如下的布局图,进一步了解一下该程序中layout是如何布局的。
有layout的概念,在后续的文章中会专门讲解。
Line37:
self.setLayout(mainLayout)
通过将setLayout()方法,将mainLayout设置为窗口layout。
Line38:
self.setWindowTitle('
通过setWindowTitle()方法设置窗口的标题
Line39:
self.show()
通过show()方法将窗口显示到屏幕上
Line40~48:
定义了处理printButton点击信号的槽函数,当editLine输入框中的文本为空的时候弹出消息框(QMessageBox),提示“Pleaseentertheletter.”;
当editLine输入框中的文本不为空时候弹出消息框,显示editLine中的文本。
触发槽函数printText()之后,当editLine输入框内容为空时界面显示如下:
Line49~55:
定义了处理clearButton点击信号的槽函数,清空editLine输入框中的文本信息。
Line57~60:
sys.exit(app.exec_())
程序运行的入口函数类似C语言中的main()方法。
app=QApplication(sys.argv),每一个pyqt程序必须创建一个application对象,sys.argv是命令行参数,可以通过命令启动的时候传递参数。
ex=ShowWindow(),创建ShowWindow对象。
sys.exit(app.exec_()),app.exec_()事件处理开始,进入程序主循环。
主循环等待时间,并把事件发送给指定处理的任务中。
当调用app.exit()或者程序因为各种原因被破坏后,使用sys.exit()关闭程序,并释放内存资源。
到此为止,第一个PyQt程序分析结束,可能会存在输入框,布局,等各类控件如何使用,如何确定对应的控件在那个模块中?
在后续的文章中会详细进行介绍。
三基本界面组件之Button
抽象类QAbstractButton:
QAbstractButton作为抽象类,提供button的通用功能,可按按钮(pushbutton)和可选择按钮(checkablebutton)。
可选择按钮实现有QRadioButton和QCheckBox;
可按按钮实现有QPushButton和QToolButton。
任何一种button可以显示带文本(.setText()方法设置文本)和图标(.setIcon()设置图标)的标签。
QAbstractButton提供的状态:
1、isDown()提示button是否按下
2、isChecked()提示button是否已经标记
3、isEnable()提示button是否可以被用户点击
4、isCheckAble()提示button是否为可标记
5、setAutoRepeat()设置button是否在用户长按按钮的时候可以自动重复执行。
QAbstractButton提供的信号:
1、pressed(),当鼠标在button上并点击左键的时候触发信号
2、released(),当鼠标左键被释放的时候触发信号
3、clicked(),当鼠标首次按下,然后释放,或者快捷键被释放的时候触发信号
4、toggled(),当button的标记状态发生改变的时候触发信号
接下来会针对每一种button进行介绍:
QPushButton:
classQPushButton(QAbstractButton)
|QPushButton(QWidgetparent=None)
|QPushButton(str,QWidgetparent=None)
|QPushButton(QIcon,str,QWidgetparent=None)
由此可见QPushButton继承自QAbstractButton,是一种command按钮。
点击执行一些命令,或者响应一些问题。
常见的诸如“确认”,“申请”,“取消”,“关闭”,“是”,“否”等按钮。
CommandButton经常通过文本来描述执行的动作。
有时候我们也会通过快捷键来执行对应按钮的命令。
通过一个示例对QPushButton来进行说明:
PushButton
fromPyQt5.QtWidgetsimportQApplication,QWidget,QPushButton
fromPyQt5.QtGuiimportQIcon
fromPyQt5.QtCoreimportQt
classPushButton(QWidget):
super(PushButton,self).__init__()
self.setWindowTitle("
PushButton"
self.setGeometry(400,400,300,260)
self.closeButton=QPushButton(self)
self.closeButton.setText("
Close"
)#text
self.closeButton.setIcon(QIcon("
close.png"
))#icon
self.closeButton.setShortcut('
Ctrl+D'
)#shortcutkey
self.closeButton.clicked.connect(self.close)
self.closeButton.setToolTip("
Closethewidget"
)#Tooltip
self.closeButton.move(100,100)
ex=PushButton()
ex.show()
sys.exit(app.exec_())
运行之后的效果:
控件说明:
示例说明:
名称为“Close”的Buttton,点击该Button之后关闭该窗口。
或者通过快捷键“Ctrl+C”的快捷方式亦可关闭该窗口。
代码分析:
其他代码部分可以参考上一篇《Pyqt5系列
(二)-第一个PyQt程序》中的说明。
L21~22:
self.closeButton.setText("
self.closeButton.setIcon(QIcon("
setText()方法,设定button的文本
setIcon()方法,设定button的图标
关于button文本和图标的显示,也可以通过QPushButton的构造函数,在创建对象实例的时候通过参数直接设定。
|QPushButton(str,QWidgetparent=None)
|QPushButton(QIcon,str,QWidgetparent=None)
L23:
self.closeButton.setShortcut('
给closeButton设定快捷键方式,即通过Ctrl+D实现与点击closeButton一样的功能。
L24:
self.closeButton.clicked.connect(self.close)
closeButton点击事件处理的逻辑:
在点击closeButton之后调用QWidget的close()方法。
通过connect()方法将点击事件和处理逻辑关联起来。
L25:
self.closeButton.setToolTip("
setToolTip()设定提示信息,当鼠标移动到button上时显示”Closethewidget”提示信息。
QToolButton:
classQToolButton(QAbstractButton)
|QToolButton(QWidgetparent=None)
同理QToolButton继承自QAbstractButton。
QToolButton就是工具操作相关的按钮,通常和QToolBar搭配使用。
QToolButton通常不显示文本,而显示图标QIcon。
一般QToolButton会在QToolBar:
:
addAction时创建,或者已经存在的action添加到QToolBar时创建。
通过一个示例对QToolButton来进行说明:
ToolButton
fromPyQt5.QtWidgetsimportQApplication,QWidget,QToolButton,QMainWindow
classToolButton(QMainWindow):
super(ToolButton,self).__init__()
ToolButton"
self.toolbar=self.addToolBar("
toolBar"
self.statusBar()
self._detailsbutton=QToolButton()
self._detailsbutton.setCheckable(True)
self._detailsbutton.setChecked(False)
self._detailsbutton.setArrowType(Qt.RightArrow)
self._detailsbutton.setAutoRaise(True)
#self._detailsbutton.setIcon(QIcon("
test.jpg"
))
self._detailsbutton.setToolButtonStyle(Qt.ToolButtonIconOnly)
self._detailsbutton.clicked.connect(self.showDetail)
self.toolbar.addWidget(self._detailsbutton)
defshowDetail(self):
ifself._detailsbutton.isChecked():
self.statusBar().showMessage("
ShowDetail...."
else:
CloseDetail...."
ex=ToolButton()
图标为“右箭头图标”的Buttton,此按钮有开关之分。
当Button打开之后在消息栏显示“ShowDetail….”,反之显示“CloseDetail”。
L24~25:
self._detailsbutton.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Pyqt5 系列