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的方法将点击时要执行的动作函数与此绑定。
每点击一次,在控制台输出一串字符,如下图所示:
如果希望点击按钮时退出程序,可以调用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_())
运行效果如下图: