前言
Pyqt作为创建简单GUI程序的工具,已经应用刀各种app上,本章内容我们将一起走进PyQt的学习,了解下最简单的GUI程序的创建
一、PyQt4是什么?
PyQt是用来创建GUI应用程序的工具包。它是Python编程语言与已获得成功的Qt的混合体。其中Qt库是这个星球上最强大的GUI库之一。PyQt的实现被视作Python的一个模块。它由300多个类和接近6000个函数与方法构成。作为一个跨平台的工具包,PyQt可以在所有主流的操作系统上运行。
二、使用PyQt4创建入门程序
1.显示一个小窗口
代码如下:
import sys
from PyQt4 import QtGui
app = QtGui.QApplication(sys.argv)
widget = QtGui.QWidget()
widget.resize(250, 150)
widget.setWindowTitle("窗口")
widget.show()
sys.exit(app.exec_())
import sys、from PyQt4 import QtGui:这两句用来载入必须的模块。基本的GUI窗口部件在QtGui模块中。
app = QtGui.QApplication(sys.argv):每一个PyQt4程序都需要有一个application对象,applicaiton类包含在QtGui模块中。sys.argv参数是一个命令行参数列表。Python脚本可以从shell中执行,参数可以让我们选择启动脚本的方式。
widget = QtGui.QWidget():QWidget部件是PyQt4中所有用户界面类的父类。这里我们没有使用参数的默认构造函数,它没有继承其他类。我们称没有父类的widget为一个window。
widget.resize(250, 150):resize()方法可以改变窗口部件的大小,在这里我们将其设置为250像素宽,150像素高。
widget.setWindowTitle(“窗口”):这句用来设置窗口部件的标题,该标题将在标题栏中显示。
widget.show():show()方法将窗口部件显示在屏幕上。
sys.exit(app.exec_()):最后我们进入程序的主循环。事件处理从本行语句开始。主循环接受事件消息并将其分发给程序的各个部件。如果调用exit()或主部件被销毁,主循环就会结束。使用sys.exit()方法退出可以确保程序完整的结束,这种情况下系统的环境变量会记录程序是如何退出的。也许你会疑惑,为什么exec_()方法会有一个下划线。这是因为exec是Python的关键字,为避免冲突,PyQt使用exec_()替代。
2.程序图标
代码如下:
import sys
from PyQt4 import QtGui
class Icon(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle("Icon")
self.setWindowIcon(QtGui.QIcon("icon/web.png"))
app = QtGui.QApplication(sys.argv)
icon = Icon()
icon.show()
sys.exit(app.exec_())
上一个示例采用了面向过程的方法编写。Python语言同时支持面向过程和面向对象两种编程方法。PyQt编程是面向对象的。
面向对象编程中最重要的是类、属性和方法。以上代码中,我们创建了一个继承QtGui.QWidget类的新类。因此我们必须调用两个构造函数——Icon的构造函数和继承QtGui.QWidget类的构造函数
3.显示提示信息
代码如下:
import sys
from PyQt4 import QtGui, QtCore
class Tooltip(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle("Tooltip")
self.setToolTip("This is a<b>QWidget</b>widget")
QtGui.QToolTip.setFont(QtGui.QFont("OldEnglish", 10))
self.setWindowIcon(QtGui.QIcon("icon/web.png"))
app = QtGui.QApplication(sys.argv)
tooltip = Tooltip()
tooltip.show()
sys.exit(app.exec_())
在本示例中,我们为一个QWidget类型的窗口部件设置工具提示。
self.setToolTip(“This is aQWidgetwidget”):要创建工具提示,则需要调用setToolTip()方法。该方法接受富文本格式的参数。
QtGui.QToolTip.setFont(QtGui.QFont(“OldEnglish”, 10)):因为默认的QToolTip字体看起来比较扯淡,我们可以通过该语句设置想要的字体和大小。
4.关闭窗口
比较简单的关闭窗口的方式是点击窗口右上角的X标记。接下来我们将展示如何用代码来关闭程序,并简单介绍Qt的信号和槽机制。
代码如下:
import sys
from PyQt4 import QtGui, QtCore
class QuitButton(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle("Quitbutton")
quit = QtGui.QPushButton("Close", self)
quit.setGeometry(10, 10, 60, 35)
self.connect(quit, QtCore.SIGNAL("clicked()"), QtGui.qApp, QtCore.SLOT("quit()"))
app = QtGui.QApplication(sys.argv)
qb = QuitButton()
qb.show()
sys.exit(app.exec_())
quit = QtGui.QPushButton(“Close”, self),quit.setGeometry(10, 10, 60, 35):这两句用来创建一个按钮并将其放在QWidget部件上,就像我们将QWidget放在屏幕上一样。
self.connect(quit, QtCore.SIGNAL(“clicked()”), QtGui.qApp, QtCore.SLOT(“quit()”)):PyQt4的事件处理系统建立在信号-槽机制之上。如果我们单击quit按钮,那么clicked()就会被触发,槽函数可以是PyQt自带的槽函数,也可以是任何Python可以调用的函数等。QtCoreQObject.connect()方法可以将信号和槽函数连接起来。
5.消息窗口
默认情况下。我们单击窗口右上角的X标记,就会关闭窗口。但是我们想要有个关闭提示。接下来我们将展示如何用代码来提示关闭程序。
代码如下:
import sys
from PyQt4 import QtGui
class MessageBox(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle("message box")
def closeEvent(self, event):
reply = QtGui.QMessageBox.question(self, "Message", "Are you sure to quit?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)
if reply == QtGui.QMessageBox.Yes:
event.accepy()
else:
event.ignore()
app = QtGui.QApplication(sys.argv)
qb = MessageBox()
qb.show()
sys.exit(app.exec_())
如果我们关闭窗口,QCloseEvent事件就会被触发,通过reply语句,我们可以显示一个带有(Yes/No)的消息窗口,提醒是否要关闭QWidget窗。
6.将窗口放置在屏幕中间
代码如下:
import sys
from PyQt4 import QtGui
class Center(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
self.setWindowTitle("center")
self.resize(250, 150)
self.center()
def center(self):
screen = QtGui.QDesktopWidget().screenGeometry()
size = self.geometry()
self.move((screen.width() - size.width()) / 2, (screen.height() - size.height()) / 2)
app = QtGui.QApplication(sys.argv)
qb = Center()
qb.show()
sys.exit(app.exec_())
self.resize():用来设置QWidget窗口的大小;
screen = QtGui.QDesktopWidget().screenGeometry():该语句用来计算显示器的分辨率(screen.width. screen.height);
size = self.geometry():该语句用来获取QWidget窗口的大小(size.width, size.height);
self.move((screen.width() - size.width()) / 2, (screen.height() - size.height()) / 2):该语句将窗口移动到屏幕的中间位置。
总结
总的来讲PyQt的使用是比较简单的,也易于上手,对于刚接触过PyQt的同学来讲是很值得入门学习。至于以后要学到什么样的程度,那就需要继续往下学习了。
以上就是今天要讲的内容,本文仅仅简单介绍了PyQt的使用,而PyQt提供了大量能使我们快速便捷地处理数据的函数和方法。