利用PyQt创建简单的GUI应用程序


前言

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提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CNodeGamer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值