PySide教程:簡單的對話框應用程序

作者: meegoq.com  來源: MeeGo中文論壇-米趣網  發布時間: 2011-01-31 13:01  閱讀: 2150 次  推薦: 0   原文鏈接   [收藏]  

  本文將展示如何使用基本控件創建簡單的對話框。主要流程是用戶在QLineEdit中鍵入名字,點擊QPushButton后會看見問候。

  下面這個小程序將創建和顯示對話框,小程序會在整個過程中更新,你可以將這個程序用在你需要的項目中。

代碼
 
#!/usr/bin/python
# -*- 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()方法中。

 
# Create widgets
self.edit = QLineEdit("Write my name here..")
self.button
= QPushButton("Show Greetings")

     可以看到,兩個控件都顯示了相應的文字。

  為控件創建布局
       Qt為了幫助用戶在其程序中組織控件而引入了一些布局。這個例子里,我們做簡單化處理,只創建一個QVBoxLayout,這個而已將在豎直方向分布控件。把下面的代碼加入init()中創建控件后的地方。

 
# Create layout and add widgets
layout = QVBoxLayout()
layout.addWidget(self.edit)
layout.addWidget(self.button)

# Set dialog layout
self.setLayout(layout)

       我們創建了而已,使用addWidget()方法添加了這些控件。最終窗體將使用我們QVBoxLayout作為其布局。

  創建顯示的函數并連接至按鈕

       最終,我們需要在窗體中加入顯示用戶的函數,并連接到我們的按鈕上。函數是窗體的一部分,所以需要加在init()函數的后面。

 
# Greets the user
def greetings(self):
print ("Hello %s" % self.edit.text())

       為了得到需要顯示的內容,我們調用了QLineEdit.text()方法。

       現在,我們需要的都有了,只剩下把QPushButton連接到Form.greetings()方法。在init()函數里,我們添加下面的代碼:

 
# Add button signal to greetings slot
self.button.clicked.connect(self.greetings)

     在程序運行后,你就可以在QLineEdit中輸入你的名字并在終端里看到問候了。

  你還可以接著做

  • 用MessageBox而不是在終端里顯示自己的名字。查看 QMessageBox 的幫助文檔 ,試試吧。
  • 你可以嘗試著給Window添加一個圖標 。查看 QWidget的文檔
  • 添加一個關閉按鈕如何?只需要添加一個按鈕,將其加入而已,再把它連接到exit槽就可以了。
  • 你也可以把布局改為水平方向,使用QHBoxLayout. 在PySide Layout 中查看更多,比如 QHBoxLayout, QGridLayout.
0
0
 
標簽:PySide
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()