• PySide教程:简单的对话框应用程序 狼人:


      本文将展示如何使用基本控件创建简单的对话框。主要流程是用户在QLineEdit中键入名字,点击QPushButton后会看见问候。

      下面这个小程序将创建和显示对话框,小程序会在整个过程中更新,你可以将这个程序用在你需要的项目中。

    代码
    #!/usr/bin/python
    #
    -*- coding: utf-8 -*-

    import sys
    from PySide.QtCore import *
    from PySide.QtGui import *

    class Form(QDialog):

    def __init__(self, parent=None):
    super(Form, self).
    __init__(parent)
    self.setWindowTitle(
    "My Form")


    if __name__ == '__main__':
    # Create the Qt Application
    app = QApplication(sys.argv)
    # Create and show the form
    form = Form()
    form.show()
    # Run the main Qt loop
    sys.exit(app.exec_())

          假如你看过前面的教程,你大概已经熟悉上面的不少代码了吧,应该对引入包、创建应用以及执行Qt主循环很熟悉了。唯一新的地方是类定义。

           你可以创建任意PySide控件的子类。在这里,我们继承QDialog并做了自定义,将名字指定为"Form"。同时,我们实现了 init()方法,init()调用了父类QDialog的init()方法,并调用了setWindowTitle()方法,这个方法设置了对话框窗体的标题。在main()函数中,你可以看到我们创建了Form对象并将其显示出来。

      创建控件
           我们将要创建两个控件 - QLineEdit给用户输入 名字,QPushButton则用来显示QLineEdit的内容。因此,我们把下面两行代码加入 init()方法中。

    # Create widgets
    self.edit = QLineEdit("Write my name here..")
    self.button
    = QPushButton("Show Greetings")

         可以看到,两个控件都显示了相应的文字。

      为控件创建布局
           Qt为了帮助用户在其程序中组织控件而引入了一些布局。这个例子里,我们做简单化处理,只创建一个QVBoxLayout,这个而已将在竖直方向分布控件。把下面的代码加入init()中创建控件后的地方。

    # Create layout and add widgets
    layout = QVBoxLayout()
    layout.addWidget(self.edit)
    layout.addWidget(self.button)
    # Set dialog layout
    self.setLayout(layout)

           我们创建了而已,使用addWidget()方法添加了这些控件。最终窗体将使用我们QVBoxLayout作为其布局。

      创建显示的函数并连接至按钮

           最终,我们需要在窗体中加入显示用户的函数,并连接到我们的按钮上。函数是窗体的一部分,所以需要加在init()函数的后面。

    # Greets the user
    def greetings(self):
    print ("Hello %s" % self.edit.text())

           为了得到需要显示的内容,我们调用了QLineEdit.text()方法。

           现在,我们需要的都有了,只剩下把QPushButton连接到Form.greetings()方法。在init()函数里,我们添加下面的代码:

    # Add button signal to greetings slot
    self.button.clicked.connect(self.greetings)

         在程序运行后,你就可以在QLineEdit中输入你的名字并在终端里看到问候了。

      你还可以接着做

    • 用MessageBox而不是在终端里显示自己的名字。查看 QMessageBox 的帮助文档 ,试试吧。
    • 你可以尝试着给Window添加一个图标 。查看 QWidget的文档
    • 添加一个关闭按钮如何?只需要添加一个按钮,将其加入而已,再把它连接到exit槽就可以了。
    • 你也可以把布局改为水平方向,使用QHBoxLayout. 在PySide Layout 中查看更多,比如 QHBoxLayout, QGridLayout.
  • 相关阅读:
    git速度慢解决方式
    idea破解
    高并发redis分布式锁
    一个简单的struts2项目
    一个简单的java项目使用hibernate连接mysql数据库
    hibernate连接数据库中文乱码
    删除文件时出现找不到该项目 请确认该项目位置
    redis错误解决
    pyQT4和pyQT5的主要模块介绍
    python之type函数
  • 原文地址:https://www.cnblogs.com/waw/p/2164491.html
Copyright © 2020-2023  润新知