在本文中,我們繼續前一節的內容,談談pyqt4中的控制項。本節主要包括影象控制項(qtgui.qpixmap)、行編輯控制項(qtgui.qlineedit)、拆分控制項(qtgui.qsplitter)、組合框控制項(qtgui.qcombobox)。
qtgui.qpixmap控制項是處理影象控制項中的乙個,它為在螢幕上顯示進行了優化。在下面的示例**中,我們採用qtgui.qpixmap控制項在視窗上顯示。
在上述示例中,我們在視窗上顯示了一幅,如下圖所示(修改了原文中的)。#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from pyqt4 import qtgui, qtcore
class
example
(qtgui.qwidget):
def__init__
(self):
super(example, self).__init__()
self.initui()
definitui
(self):
hbox = qtgui.qhboxlayout(self)
# 建立控制項,使用的檔名作為引數
# 將控制項放入標籤控制項中
lbl = qtgui.qlabel(self)
lbl.setpixmap(pixmap)
hbox.addwidget(lbl)
self.setlayout(hbox)
self.move(300, 200)
self.setwindowtitle('pixmap')
self.show()
defmain
(): ex = example()
if __name__ == '__main__':
main()
qtgui.qlineedit控制項允許輸入或編輯一行文字。對於該控制項,可以使用撤銷(undo)和重做(redo)、剪下(cut)和貼上(paste)、拖放(drag & drop)等功能。
在上述示例中,應用程式在主視窗上建立了乙個行編輯輸入框以及乙個文字標籤控制項。當在行編輯輸入框中輸入文字時,文字標籤控制項會立即將文字內容顯示出來。#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from pyqt4 import qtgui, qtcore
class
example
(qtgui.qwidget):
def__init__
(self):
super(example, self).__init__()
self.initui()
definitui
(self):
# 建立文字標籤控制項及行輸入框控制項
self.lbl = qtgui.qlabel(self)
qle = qtgui.qlineedit(self)
qle.move(60, 100)
self.lbl.move(60, 40)
# 當行輸入框控制項中的文字發生變化時,呼叫onchanged()方法
qle.textchanged[str].connect(self.onchanged)
self.setgeometry(300, 300, 280, 170)
self.setwindowtitle('lineedit')
self.show()
defonchanged
(self, text):
# 顯示文字內容,並根據文字長度調整標籤控制項的大小
self.lbl.settext(text)
self.lbl.adjustsize()
defmain
(): ex = example()
if __name__ == '__main__':
main()
qtgui.qsplitter控制項允許使用者通過拖放子控制項的邊界來調整子控制項的大小。在下面的示例程式中,我們採用兩個拆分器來管理三個框架控制項(qtgui.qframe)。
如下圖所示,我們建立了三個框架和兩個拆分器。#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from
pyqt4
import qtgui, qtcore
class
example
(qtgui.qwidget):
def __init__(self):
super(example, self).__init__()
self.initui()
def initui(self):
hbox = qtgui.qhboxlayout
(self)
topleft = qtgui.qframe
(self)
topleft.setframeshape(qtgui.qframe.styledpanel)
topright = qtgui.qframe
(self)
topright.setframeshape(qtgui.qframe.styledpanel)
bottom = qtgui.qframe
(self)
bottom.setframeshape(qtgui.qframe.styledpanel)
# 建立乙個拆分器並將兩個框架加入其中
splitter1 = qtgui.qsplitter
(qtcore.qt.horizontal)
splitter1.addwidget(topleft)
splitter1.addwidget(topright)
# 將前乙個拆分器加入到當前建立的拆分器中
splitter2 = qtgui.qsplitter
(qtcore.qt.vertical)
splitter2.addwidget(splitter1)
splitter2.addwidget(bottom)
hbox.addwidget(splitter2)
self.setlayout(hbox)
self.setgeometry(300, 300, 300, 200)
self.setwindowtitle('qtgui.qsplitter')
self.show()
def main():
(sys.argv)
ex = example
()if __name__ == '__main__':
main()
qtgui.qcombobox控制項允許使用者在選項列表中選擇條目。
在上述的示例程式中,我們建立了乙個組合框控制項以及乙個文字標籤控制項,該組合框包含五個可選項。文字標籤控制項用於顯示組合框中選中的條目。#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from pyqt4 import qtgui, qtcore
class
example
(qtgui.qwidget):
def__init__
(self):
super(example, self).__init__()
self.initui()
definitui
(self):
self.lbl = qtgui.qlabel('ubuntu', self)
self.lbl.move(50, 150)
# 建立組合框並新增5個候選項
combo = qtgui.qcombobox(self)
combo.additem('ubuntu')
combo.additem('mandriva')
combo.additem('fedora')
combo.additem('red hat')
combo.additem('gentoo')
combo.move(50, 50)
# 當選擇條目時,呼叫onactivate()方法
combo.activated[str].connect(self.onactivate)
self.setgeometry(300, 300, 300, 200)
self.setwindowtitle('combobox')
self.show()
defonactivate
(self, text):
# 顯示文字內容,並根據文字長度調整標籤控制項的大小
self.lbl.settext(text)
self.lbl.adjustsize()
defmain
(): ex = example()
if __name__ == '__main__':
main()
pyqt4學習筆記
訊號與槽機制作為qt最重要的特性,提供了任意兩個qt物件之間的通訊機制。其中,訊號會在某個特定情況或動作下被觸發,槽是用於接收並處理訊號的函式。例如,要將乙個視窗中的變化情況通知給另乙個視窗,則乙個視窗傳送訊號,另乙個視窗的槽接收此訊號並進行相應的操作,即可實現兩個視窗之間的通訊。這比傳統的圖形化程...
PyQt4學習資料彙總
乙個月前研究了下pyqt4,感覺比較不錯。相比wxpython,介面美觀了很多,並且將介面設計與 邏輯很好的分離了開來。關於pyqt4的資料也不少,這裡我將我找到的資料彙總一下,以防自己以後忘得一乾二淨。1.pyqt4資料鏈結 2.寫 時,最好的幫助文件 static docs pyqt4 html...
PyQt4學習資料彙總
乙個月前研究了下pyqt4,感覺比較不錯。相比wxpython,介面美觀了很多,並且將介面設計與 邏輯很好的分離了開來。關於pyqt4的資料也不少,這裡我將我找到的資料彙總一下,以防自己以後忘得一乾二淨。1.pyqt4資料鏈結 2.寫 時,最好的幫助文件 static docs pyqt4 html...