PySide教程:簡單的對話框應用程序
本文將展示如何使用基本控件創建簡單的對話框。主要流程是用戶在QLineEdit中鍵入名字,點擊QPushButton后會看見問候。
下面這個小程序將創建和顯示對話框,小程序會在整個過程中更新,你可以將這個程序用在你需要的項目中。

# -*- coding: utf-8 -*-
import sys
from PySide.QtCore import *
from PySide.QtGui import *
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_())
假如你看過前面的教程,你大概已經熟悉上面的不少代碼了吧,應該對引入包、創建應用以及執行Qt主循環很熟悉了。唯一新的地方是類定義。
你可以創建任意PySide控件的子類。在這里,我們繼承QDialog并做了自定義,將名字指定為"Form"。同時,我們實現了 init()方法,init()調用了父類QDialog的init()方法,并調用了setWindowTitle()方法,這個方法設置了對話框窗體的標題。在main()函數中,你可以看到我們創建了Form對象并將其顯示出來。
創建控件
我們將要創建兩個控件 - QLineEdit給用戶輸入 名字,QPushButton則用來顯示QLineEdit的內容。因此,我們把下面兩行代碼加入 init()方法中。
self.edit = QLineEdit("Write my name here..")
self.button = QPushButton("Show Greetings")
可以看到,兩個控件都顯示了相應的文字。
為控件創建布局
Qt為了幫助用戶在其程序中組織控件而引入了一些布局。這個例子里,我們做簡單化處理,只創建一個QVBoxLayout,這個而已將在豎直方向分布控件。把下面的代碼加入init()中創建控件后的地方。
layout = QVBoxLayout()
layout.addWidget(self.edit)
layout.addWidget(self.button)
# Set dialog layout
self.setLayout(layout)
我們創建了而已,使用addWidget()方法添加了這些控件。最終窗體將使用我們QVBoxLayout作為其布局。
創建顯示的函數并連接至按鈕
最終,我們需要在窗體中加入顯示用戶的函數,并連接到我們的按鈕上。函數是窗體的一部分,所以需要加在init()函數的后面。
def greetings(self):
print ("Hello %s" % self.edit.text())
為了得到需要顯示的內容,我們調用了QLineEdit.text()方法。
現在,我們需要的都有了,只剩下把QPushButton連接到Form.greetings()方法。在init()函數里,我們添加下面的代碼:
self.button.clicked.connect(self.greetings)
在程序運行后,你就可以在QLineEdit中輸入你的名字并在終端里看到問候了。
你還可以接著做:
- 用MessageBox而不是在終端里顯示自己的名字。查看 QMessageBox 的幫助文檔 ,試試吧。
- 你可以嘗試著給Window添加一個圖標 。查看 QWidget的文檔 。
- 添加一個關閉按鈕如何?只需要添加一個按鈕,將其加入而已,再把它連接到exit槽就可以了。
- 你也可以把布局改為水平方向,使用QHBoxLayout. 在PySide Layout 中查看更多,比如 QHBoxLayout, QGridLayout.