程序员

官方提供的基础指南二

2018-11-02  本文已影响0人  cloveses

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
上一篇下一篇

猜你喜欢

热点阅读