在这篇文章里,我们将为你展示如何使用PySide使用信号、槽机制。基本来说,这是Qt提供给你的允许一个图形控件与其他图形控件或者python代码进行通讯的特性。
我们将要创建一个应用,你点击应用中的按钮后将在Python终端里显示"Hello World"字样。
下面让我们引入必要的Qt类以及python sys类。
import
sys
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtCore import *
from PySide.QtGui import *
同时,创建一个python函数,只是用来向终端写入"Hello World"
#
Greetings
def sayHello():
print " Hello World! "
def sayHello():
print " Hello World! "
现在,就像在PySide教程:第一个PySide应用 里提到的,你必须在运行PySide代码前先创建QApplication。输入以下代码
#
Create the Qt Application
app = QApplication(sys.argv)
app = QApplication(sys.argv)
让我们创建可以点击的按钮,QPushButton。我们传给构造函数一个python字符串,显示在按钮之上。
#
Create a button
button = QPushButton( " Click me " )
button = QPushButton( " Click me " )
在显示按钮之前,我们必须把按钮和之前定义的函数sayHello()连起来。目前来说,有两种方法可以达到这个效果 -- 一种旧方式,一种新方式。新方式更符合python的风格(pythonic)。我们在这里使用新方式。你现在可以在 PySide中的信号和槽 找到更多信息。
QPushButton已经预定义了一个名为clicked的信号,每次按钮按下后都会发射这个信号。我们现在将它和函数sayHello()连接起来。
#
Connect the button to the function
button.clicked.connect(sayHello)
button.clicked.connect(sayHello)
最终,我们显示这个按钮,并进入Qt主循环。
#
Show the button
button.show()
# Run the main Qt loop
app.exec_()
button.show()
# Run the main Qt loop
app.exec_()
每次你点击按钮,你都能在终端里看到"Hello World"字样。
完整代码:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PySide.QtCore import *
from PySide.QtGui import *
def sayHello():
print "Hello World!"
# Create the Qt Application
app = QApplication(sys.argv)
# Create a button, connect it and show it
button = QPushButton("Click me")
button.clicked.connect(sayHello)
button.show()
# Run the main Qt loop
app.exec_()
# -*- coding: utf-8 -*-
import sys
from PySide.QtCore import *
from PySide.QtGui import *
def sayHello():
print "Hello World!"
# Create the Qt Application
app = QApplication(sys.argv)
# Create a button, connect it and show it
button = QPushButton("Click me")
button.clicked.connect(sayHello)
button.show()
# Run the main Qt loop
app.exec_()