zoukankan      html  css  js  c++  java
  • 读Pyqt4简介,带你入门Pyqt4 _001

    PyQt是用来创建GUI应用程序的工具包,它把Python和成功的Qt绑定在一起,Qt库是这个星球上最强大的库之一,如果不是最强大的话。

    PyQt作为一组Python模块的实现。有超过300个类和超过6000个方法。它是个跨平台的工具包,它可以运行在所有的主流操作系统上。包括Unix、Windows、Mac。它具有双重授权,开发者可以选择GPL或者商业授权。以前GPL版本只能在Unix上获得。从PyQt4开始,可以在所有支持的平台上获得GPL协议。

    由于有大量可用的类,它们被分成多个模块。

    图:PyQt4模块

    接下来介绍一些例子来进行学习:

    示例一:

    这个例子十分简单,它仅仅现实一个小窗体。但是我们可以在这个窗体上进行很多操作,我们可以调整大小、最大化、最小化

    #!/usr/bin/python
    
    # simple.py
    
    import sys
    from PyQt4 import QtGui
    
    app = QtGui.QApplication(sys.argv)
    
    widget = QtGui.QWidget()
    widget.resize(250, 150)
    widget.setWindowTitle('simple')
    widget.show()
    
    sys.exit(app.exec_())

    上面的代码显示在屏幕上显示一个小窗体。

    import sys
    from PyQt4 import QtGui

    我们在这里进行一些必要的import操作。基本的GUI组件在 QtGui 模块中。

    app = QtGui.QApplication(sys.argv)

    每个PyQt4程序必须创建一个application对象,application在 QtGui 模块中, sys.argv 参数是命令行中的一组参数。Python脚本可以在shell中运行,这样,我们可以控制脚本的启动。

    widget = QtGui.QWidget()

    QWidget 窗口组件是PyQt4中所有用户界面对象的基类,我们使用 QWidget 默认的构造,没有父亲。没有父亲的窗口组件称为窗体。

    widget.resize(250, 150)

    resize() 方法调整了 widget 的大小,宽250像素,高150像素。

    widget.setWindowTitle('simple')

    这里我们为窗口设置了标题,标题显示在标题栏上。

    widget.show()

    show() 方法将窗口呈现在屏幕上。

    sys.exit(app.exec_())

    最后,我们输入应用程序的主事件循环,事件处理从这里开始。主事件循环从窗口系统接收事件并分发到应用程序的窗口组件上。当主事件循环结束,如果我们调用 exit() 方法或者主窗口组件被销毁。 sys.exit() 方法确保干净的退出。将通知环境应用程序是如何结束的。

    你是否想知道为什么 exec_() 方法会有下划线,一切皆有含义,这显然是因为exec是Python的关键字,因此,用 exec_() 来取代它。

    示例二:

    默认情况下,当我们点击标题栏上的关闭按钮, QWdiget 将关闭。有时候我们需要改变默认行为,比如:当我们在编辑器中打开一个文件并且做了一些修改,显示一个消息框来确认这个动作。

    #!/usr/bin/python
    
    # messagebox.py
    
    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.accept()
            else:
                event.ignore()
    
    app = QtGui.QApplication(sys.argv)
    qb = MessageBox()
    qb.show()
    sys.exit(app.exec_())

    如果我们关闭 QWidget ,将会产生一个 QCloseEvent 事件,我们需要重新实现 closeEvent() 事件来改变组件的行为。

    reply = QtGui.QMessageBox.question(self, 'Message',
        "Are you sure to quit?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)

    我们显示一个两个按钮的消息框,Yes和No。第一个字符串显示在标题栏上,第二个字符串是信息文本,显示在对话框中,返回值存储在 relay 变量中。

    (Mac OS X上不显示标题)

    if reply == QtGui.QMessageBox.Yes:
        event.accept()
    else:
        event.ignore()

    这里我们测试返回值,如果点击Yes按钮,表明接受这个事件,将会关闭窗口组件并进回到应用程序的结尾,反之则忽略该关闭事件。

     

    本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 
    转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4512851.html

     

     

  • 相关阅读:
    iOS App Store审核上传应用预览视频
    mac 下常用命令(xcode常用命令,环境相关等)
    Xcode遇到的一些常见异常
    Tomcat的SSL配置keytool生成证书
    iOS Developer TODO
    Linix常用命令
    iOS&OSX系统初步了解
    Mac下安装MySQL及启动等常用命令
    Android WebView存在跨域访问漏洞(CNVD-2017-36682)介绍及解决
    HTML5 Audio/Video 标签,属性,方法,事件汇总 (转)
  • 原文地址:https://www.cnblogs.com/superdo/p/4512851.html
Copyright © 2011-2022 走看看