Pyside2 学习笔记 二 信号与槽

import sys
from PySide2.QtWidgets import QApplication, QLabel, QPushButton
from PySide2.QtCore import Slot

@Slot()
def say_hello():
    print("Button clicked! Hello!")
app = QApplication(sys.argv)
button = QPushButton("Click me!")
button.clicked.connect(say_hello)
button.show()
app.exec_()

在这里,我们的窗口就是一个button按钮。并且定义了一个方法,say_hello(),该方法作为槽函数,发给了clicked信号。

运行该程序后,点击button,就会在终端显示 Button clicked! Hello!

或许,我们觉得这样写是不是简单了点,

我们可以使用一个更复杂的例子,说是复杂无非是加了点控件而已。

1、我们要定义一个widget,

2、在widget里放置一个button,一个label。

button就是上面代码的button,label是为了代替终端显示。

3、运行

代码如下:

import sys
from PySide2.QtWidgets import QApplication, QLabel, QPushButton,QWidget,QVBoxLayout
from PySide2.QtCore import Slot

@Slot()
def say_hello():
    label.setText("Hello world!")
app = QApplication(sys.argv)
w = QWidget()
w.setFixedSize(300,300)
layout = QVBoxLayout(w)
button = QPushButton("Click me!",w)
label = QLabel("",w)
layout.addWidget(button)
layout.addWidget(label)

button.clicked.connect(say_hello)
w.show()
app.exec_()

这里用到了一个QVBoxLayout 的布局。

就是按顺序放进去,按竖直方向排序。

最简单的测试案例是修改上面的代码:

import sys
from PySide2.QtWidgets import QApplication, QPushButton,QWidget,QVBoxLayout

app = QApplication(sys.argv)
w = QWidget()
w.setFixedSize(300,300)
layout = QVBoxLayout(w)
for i in range(5):
    layout.addWidget(QPushButton(str(i),w))
w.show()
app.exec_()

所有的小功能就是这样一点点的叠加起来的

你可能感兴趣的:(pyside2)