OK , 在Linux的開發環境下,對於咱們的簡短的PySide程序而言,不須要使用QtCreator,使用文本編輯器。之因此,使用文本編輯器,是由於小應用代碼量不多,更重要的是一行行的寫能夠加深咱們對於Qt應用的理解。不過,當咱們對整個程序的結構有着比較清晰的認識以後,咱們就只須要將精力關注在那些發生改變的部分便可。在這裏,我推薦VIM和一個叫作snipmate的插件。python
在Hello PySide中,咱們寫了一個經典的Hello World 。 它在個人Fedora上的實現效果以下:編程
感受看起來還不錯,可是這個界面的顯示只是一個QLabel元素,加上Font屬性的 Hello World ,而且顯示在屏幕的左上角。距離咱們想要的東西還差的很遠。vim
我讀大學的時候學習了一門SSD課程,SSD4吧(記不太清楚,好像使用VB)是專門講界面設計的一些原則的課程。一個界面至少應該有標題,大小,菜單欄,工具欄,狀態欄甚至應該具備某些佈局等等,而且要考慮到用戶的一些使用習慣等等,例如獲取焦點,自動切換,以用戶爲中心的人機交互設計。可是對於HelloWorld而言,它沒有自定義的標題,大小是由字體決定等等。萬幸的是,Qt給咱們提供了豐富的元素來建立這些內容,只須要設置好這些元素的規則便可。app
接下來咱們使用Widget來建立一個HelloWorld。它應該具備如下的特色,大小,標題。框架
1 #!/usr/bin/python 2 #coding:utf-8 3 #Filename:WigetHelloWorld.py 4 5 import sys 6 from PySide.QtCore import * 7 from PySide.QtGui import * 8 9 app = QApplication(sys.argv) 10 11 widget = QWidget() 12 widget.resize(250,150) 13 widget.setWindowTitle("Hello World") 14 label = QLabel("<font color=red size=30>Hello world </font>",widget) 15 label.move(50,50) 16 widget.show() 17 18 sys.exit(app.exec_())
第十一行:使用QWidget建立一個Widget對象編輯器
第十二行:從新設置Widget的大小,寬度250,高度150ide
第十三行:設置窗口標題 Hello World函數
第十四行:在widget上添加一個label,注意要將widget做爲一個參數傳遞給QLabel工具
第十五行:將label移動到距離widget頂端距離50,左邊距離50的位置佈局
效果以下圖:
比第一個寒酸的界面顯得更加大氣一點了。可是咱們的代碼這樣寫就會很亂,若是繼續添加QPushButton,其餘處理等等,不方便管理。既然咱們使用一個QWidget類,何不繼承它,將須要進行的操做放在子類中。這一點和JAVA的界面編程風格相似。因此對以上代碼進行重構:
1 #!/usr/bin/python 2 #coding:utf-8 3 #Filename:WigetHelloWorld.py 4 5 import sys 6 from PySide.QtCore import * 7 from PySide.QtGui import * 8 class Example(QWidget): 9 def __init__(self): 10 super(Example,self).__init__() 11 self.initUI() 12 def initUI(self): 13 label = QLabel("<font color=red size=30>Hello World</font>",self) 14 label.move(50,50) 15 self.setGeometry(300,300,250,150) 16 self.setWindowTitle("Hello World") 17 self.show() 18 def main(): 19 app = QApplication(sys.argv) 20 ex = Example() 21 sys.exit(app.exec_()) 22 if __name__ == "__main__": 23 main()
本版本中採用OOP的編程思想:類,數據和方法。這裏建立了一個Example類,Example類繼承QWidget。所以,在構造函數中,須要調用超類的構造函數。
self.setGeometry(300,300,250,150)
setGeometry的功能主要有兩個:定位Widget在桌面上的位置和設置窗口的大小,前兩個參數設置距離屏幕left和top的距離,後兩個參數設置窗口的高和寬。
這樣作的好處就是,能夠是咱們將注意力集中在對整個界面上的編程中,無需關注其餘重複的內容。這也是往下的一個基礎框架,之後全部的程序都將在以下框架的基礎上完成,那麼請在vim插件中的python.snippetst中添加自定義的觸發器,個人配置以下:
1 snippet # 2 #!/usr/bin/python 3 #coding:utf-8 4 #Filename:${1:filename} 5 snippet qt 6 import sys 7 from PySide.QtCore import * 8 from PySide.QtGui import * 9 class ${1:classname}: 10 def __init__(self): 11 super(${2:classname},self).__init__() 12 self.initUI() 13 def initUI(self): 14 ${3:initUI} 15 def main(): 16 app = QApplication(sys.argv) 17 ${4:TODO} 18 sys.exit(app.exec_()) 19 if __name__ == "__main__": 20 main()
打開vim,進入插入模式,輸入#,按下tab,vim就會自動給你補全開篇三行。接下來,輸入qt,按下tab,就會把整個框架放在你的vim中。