美文网首页程序员
官方提供的基础指南二

官方提供的基础指南二

作者: cloveses | 来源:发表于2018-11-02 15:16 被阅读0次

    4.按钮使用

    import sys
    from PySide2.QtWidgets import QApplication, QPushButton
    
    def say_hello(): 
      print("Button clicked, Hello!")
    
    # Create the Qt Application
    app = QApplication(sys.argv)
    
    # Create a button, connect it and show it
    button = QPushButton("Click me")
    button.clicked.connect(say_hello)
    button.show()
    # Run the main Qt loop
    app.exec_()
    

    程序中先定义了say_hello()函数,用于在按钮被点击时调用。之后,初始化了一个QPushButton类,并通过类的QPushButton的方法将点击时要执行的动作函数与此绑定。
    每点击一次,在控制台输出一串字符,如下图所示:


    Snipaste_2018-11-02_14-36-59.png

    如果希望点击按钮时退出程序,可以调用QApplication实例的exit函数,即通过以下语句实现:

    button.clicked.connect(app.exit)
    

    5.对话框使用

    程序的基本框架

    代码如下:

    import sys
    from PySide2.QtWidgets import QApplication, QDialog, QLineEdit, QPushButton
    
    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_())
    

    与之前的程序有所不同:程序中自定义了一个Form类,继承了QDialog类。并在类中调用了父类的初始化方法和从父类继承而来的setWindowTitle()方法,设置了窗口的标题。
    其余部分与之前实例结构相同。

    添加其他图形组件

    添加图形组件有四个基本步骤:
    1.创建图形组件

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

    以上创建了两个图形组件
    2.创建布局管理器,用于对组件进行添加和布局管理

    layout = QVBoxLayout()
    

    3.将组件加入布局管理器

    layout.addWidget(self.edit)
    layout.addWidget(self.button)
    

    4.将布局管理添加到父级组件上

    self.setLayout(layout)
    

    以上步骤都需要在类的初始化时完成,所以应将以上代码全部放入Form类的init()方法的最后。

    定义按钮的动作函数并绑定至按钮

    def greetings(self):
        print("Hello {}".format(self.edit.text()))
    

    然后使用button的属性绑定greeting方法:

    self.button.clicked.connect(self.greetings)
    

    完整的代码如下:

    import sys
    from PySide2.QtWidgets import (QLineEdit, QPushButton, QApplication,
        QVBoxLayout, QDialog)
    
    class Form(QDialog):
    
        def __init__(self, parent=None):
            super(Form, self).__init__(parent)
            # Create widgets
            self.edit = QLineEdit("Write my name here")
            self.button = QPushButton("Show Greetings")
            # Create layout and add widgets
            layout = QVBoxLayout()
            layout.addWidget(self.edit)
            layout.addWidget(self.button)
            # Set dialog layout
            self.setLayout(layout)
            # Add button signal to greetings slot
            self.button.clicked.connect(self.greetings)
        # Greets the user
        def greetings(self):
            print ("Hello %s" % self.edit.text())
    
    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_())
    

    运行效果如下图:


    Snipaste_2018-11-02_15-13-15.png

    相关文章

      网友评论

        本文标题:官方提供的基础指南二

        本文链接:https://www.haomeiwen.com/subject/dgfcxqtx.html