轉自:http://blog.csdn.net/seeground/article/details/49177387?locationNum=3&fps=1
listWidget = QListWidget() #實例化一個(item base)的列表
listWidget.addItem('dd') #添加一個項
listWidget.addItems([]) # 從序列中添加子項
listWidget.setDragEnabled(True) #設置拖拉
listWidget.sortItems() #排序
listWidget.selectAll()全選
listWidget.setSortingEnabled(bool) #設置自動排序
listWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) #設置選擇模式
選擇模式有:ExtendedSelection 按住ctrl多選, SingleSelection 單選 MultiSelection 點擊多選 ContiguousSelection 鼠標拖拉多選
listWidget.setCurrentRow(0) 設置當前選擇行 默認為-1
listWidget.count() #得到子項總數
listWidget.item(row).text() #得到第 row 行的內容 listWidget.item(row) 返回一個item 對象
listWidget.takeItem(row) #返回row 行的 所在的item 對象 可以用在 insertItem()中
listWidget.insertItem(2,item) #在第二行插入一項 item 可謂為一個listviewitem對象 或者string
listWidget.setCurrentItem('dd') #設置'dd'為當前項
listWidget.selectedItems() 返回一個 包含item對象 的list 對象
修改item 的內容
item.setText('dsds') # 設置item的內容為dsds item為對象 可從 listWidget.item(row) takeItem(row) 得到
PyQt4 QAction()使用教程
exit=QtGui.QAction(QtGui.QIcon('pix/Moon.bmp'),'Exit',self) #創建一個action "exti"為title self 為parent
exit.setSeparator(bool)#設置設置該action為分離器 也就是分隔符? 當為true時 QIcon會無效
exit.setShortcut('Ctrl+Q') #設置快捷鍵
也可以 exit.setShortcut(QKeySequence.New) # QKeySequence 保護標准的快捷按鈕 QKeySequence.Paste
exit.setStatusTip('Exit Application') #設置狀態欄說明
exit.setToolTip("exit") #設置tip
exit.setText("sdf") #設置title
exit.setWhatsThis("string") #設置what's this
當checked狀態發生改變時 發出toggled(bool) 信號
當點擊 觸發狀態發生變化時 發出triggered(bool)信號
self.connect(exit,QtCore.SIGNAL('triggered()'),QtCore.SLOT('close()')) #設置信號 插槽
創建的action 可以使用在 menubar toolbar
fileMenu = QMenuBar().addMenu(tr("&Exit"));
fileMenu.addAction(exit);
fileToolBar = addToolBar(tr("Exit"));
fileToolBar.addAction(exit);
self.label_img.setContextMenuPolicy(Qt.ActionsContextMenu) #設置右鍵菜單 添加action為右鍵菜單
因為創建一個QAction 需要6行代碼左右,如果一個窗口有幾個QAction的話 會很繁瑣 所以我們可以定義一個方法 這個可以簡單點
def createAction(self,text,slot=None,shortcut=None,icon=None,tip=None,checkable=False,signal="triggered()"):
action=QAction(text,self)
if icon is not None:
action.setIcon(QIcon("im.png"))
if shortcut is not None:
action.setShortcut(shortcut)
if tip is not None:
acton.setToolTip(tip)
action.setStatusTip(tip)
if slot is not None:
self.connect(action,SIGNAL(signal),slot)
if checkable:
action.setCheckable(checkable)
return action
PyQt4 QSettings 使用教程
setting=QSettings()
setting.setValue("lab",QVariant(50)) #設置一個lab鍵的 值
setting.value("lab")
為了使QSettings()起作用 在程序運行段 也就是app=QApplication() 以后 加上以下 一行 app.setOrganizationName("ds")
PyQt4 QDockWidget 使用教程
在pyqt4 中 dock 是一個鑲嵌在主窗口 而又能拉出來成立一個獨立窗口的控件 ,dock 是QDockWidget 的對象
dock=QDockWidget('title',self) #實例化一個dock title 為標題 self 為parent 因為QDockWidget 不添加到布局管理器中 所以我們需要傳一個parent 給他
dock.setObjectName("dock") #設置dock的對象名稱
dock.setAllowedAreas(Qt.LeftDockWidgetArea |Qt.RightDockWidgetArea) #設置dock只能在左邊 或者右邊顯示
allowedareas 有Qt.LeftDockWidgetArea Qt.RightDockWidgetArea Qt.TopDockWidgetArea Qt.BottomDockWidgetArea Qt.AllDockWidgetAreas
dock.setWidget(QLabel) #添加一個label控件
dock.setFeatures(QDockWidget.NoDockWidgetFeatures) #設置dock是否可以關閉 拉出等
參數還有 QDockWidget.DockWidgetClosable 可以關閉 DockWidgetMovable 可以移動
DockWidgetFloatable #可以獨立出來 DockWidgetVerticalTitleBar 垂直顯示標題 AllDockWidgetFeatures 除垂直標題以外 以上所有 NoDockWidgetFeatures
self.addDockWidget(Qt.RightDockWidget,dock) 添加dock到主窗口 第一個參數為顯示位置
PyQt4 QCheckBox 使用教程
setChecked(bool) 設置是否選擇
isChecked() 返回bool
發出toggled(bool)信號
PyQt4 QTableWidget 使用教程
self.table=QTableWidget() #實例化
self.table.setColumnCount(4) #設置列數
self.table.setRowCount(6) #設置行數
self.table.setWhatsThis("mantou") ###
self.table.setEditTriggers(QTableWidget.NoEditTriggers) #設置為不能編輯單元格
#set Column tab title
self.table.setHorizontalHeaderLabels(list(range(5,10)))
self.table.setVerticalHeaderLabels(["a","d"] ) #設置 行title
self.table.setAlternatingRowColors(bool) #設置交替行顏色
for i in range(0,5):
for x in range(0,7):
item=QTableWidgetItem(str(i+x)) 實例一個item對象
item.setTextAlignment(Qt.AlignLeft |Qt.AlignCenter) 設置對齊方式
item.setBackgroundColor(Qt.green) 設置背景
self.table.setItem(x,i,item) 添加Item
PyQt4 QInputDialog 使用教程
string, ok = QInputDialog.getText(self, '標題', '說明文字') # 顯示一個標題為標題 說明文字為說明問題的輸入對話框!string 為輸入的內容 ok 為點擊的按鈕
if ok and not string.isEmpty(): #如果點擊了確定 輸入了內容
pss
PyQt4 QPushButton 使用教程
button = QPushButton('***) # 實例化一個text為***)的按鈕
button.setFocusPolicy() #設置焦點樣式 樣式有:Qt.NoFocus: 無焦點,Qt.TabFocus:用tab切換焦點,Qt.ClickFocus:點擊切換焦點,Qt.StrongFocus:貌似跟click一樣 Qt.WheelFocus
button.setCheckable(True) #設置為開關按鈕 toggle 就是按下按鈕不會彈起
button.isChecked() 返回bool值 只有setCheckable()為true時有效
button.setShortcut('Ctrl+F') #設置快捷方式
#Pyqt
PyQt4 ButtonBox
buttonBox
=
QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel)
buttonBox.accepted.connect(
self
.accept)
buttonBox.rejected.connect(
self
.reject)
PyQt4 QMessageBox() 使用教程
message=QtGui.QMessageBox.question(self,u'提示:',u'你確認要退出?',QtGui.QMessageBox.Yes,QtGui.QMessageBox.No,QtGui.QMessageBox.Cancel|QMessageBox::Escape)
#彈出對話框 QMessageBox.question ,QMessageBox.warning 為類型
if message ==QtGui.QMessageBox.Yes:
event.accept()
else:
event.ignore()
message=QtGui.QMessageBox.warning(parent,"title",u"message")
PyQt4 QFont QPixmap QIcon 使用教程
font = QFont("Helvetica", 36, QFont.Bold) #得到一個font object 參數依次是 字體名,大小 ,其他字 體屬性
fm = QFontMetrics(font) # 獲得font字體輸出后占據的矩形大小
fm.height() fm.width() #長寬
icon=QIcon("sd.png")
PyQt4 QTextBrowser 使用教程
browser = QTextBrowser() #實例化一個textbrowser
browser.append('sdfsdfds') #追加內容
browser.setOpenLinks(True) #打開文檔內部鏈接 默認為True
browser.setOpenExternalLinks(True) #打開外部鏈接 默認false 當openlinks設置false時 該選項無效
textbrowser.setSearchPaths(["ldks",":/sdfs"]) #設置文檔搜索路徑 參數為包含目錄的List
textbrowser.setSource("index.html") #設置文檔
dt=textbrowser.documentTitle() #返回文檔的標題
self.connect(textbrowser,SIGNAL("SourceChanged(QUrl)"),self.update) #發出一個SourceChanged(QUrl)信號
textbrowser同時 具有以下插槽: home() :返回主文檔, backward() #返回上一文檔,forward()前進
browser.setDocumentTitle('dsds') #設置文檔標題
PyQt4 QLineEdit 使用方法
QLineEdit 單行輸入框
lineedit = QLineEdit() 實例化一個輸入框
lineedit.setText(‘abc’) 設置'abc'給 lineedit
lineedit.text()
lineedit.toPlainText() 獲得lineedit的值
lineedit =setReadOnly(True) #設置為只讀
lineedit.setDragEnabled(True) #設置能接受拖放
lineedit.setMaxLength(5) #設置最大長度
lineedit.selectAll() #全選
lineedit.setFocus() #得到焦點
lineedit.setInputMask("dx") #設置修飾 該輸入框必須輸入兩個字符
punctuationRe = QRegExp(r"[ ,;:.]") #得到一個regexp對象 可用下面的驗證
lineedit.setValidator(QRegExpValidator(QRegExp(r"[0-9]+")),self) #設置驗證 檢驗用戶輸入內容
lineedit.emit(SIGNAL('textChanged(QString)')) 發出 信號 (設置為只讀時貌似發不出 沒有具體測試)
lineedit.emit(SIGNAL(textEdited(QString)')) 發出 信號 如果設置了驗證 該信號在通過驗證才能發出 (設置為只讀時貌似發不出 沒有具體測試)
QTextEdit多行輸入框
textedit=QTextEdit()
textedit.setText(data)
textedit.append(data) 追加
textedit.setPlainText(text) set 大段文本
textedit.toPlainText() 獲得文本內容
PyQt4 QDial QSpinbox 使用方法
dial = QDial() #實例化一個dial
dial.setNotchesVisible(True) #設置邊緣
dial.emit('SIGNAL(valueChanged(int))') #發出信號
具有 SLOT("setValue(int)") 的插槽
spin=QSpinBox() #實例化
spinbox.setSingleStep(2) #設置步長 ( QDial 有)
spinbox.setRange(1,50)#范圍
spinbox.setMaximum(10) #設置最大值 ( QDial 有)
spinbox.setMinimum(5) 設置最小值 ( QDial 有)
spinbox.setValue(6) 設置當前值 ( QDial 有)
print spinbox.value() 得到當前值 ( QDial 有)
PyQt4 QComboBox QDoubleSpinBox 使用方法
fromComboBox = QComboBox() 添加一個 combobox
fromComboBox.addItem(rates) 添加一個下拉選項
fromComboBox.addItems(["%d years" % x for x in range(2, 26)]) 從序列中添加
fromComboBox.setMaxVisibleItems(10) #設置最大顯示下列項 超過要使用滾動條拖拉
fromComboBox.setMaxCount(5) #設置最大下拉項 超過將不顯示
fromComboBox.setInsertPolicy(QComboBox.InsertAfterCurrent) #設置插入方式
插入方式有:NoInsert,InsertAtTop,InsertAtCurrent,InsertAtBottom,InsertAfterCurrent
InsertBeforeCurrent,InsertAlphabetically
字面意思都好理解 最后一個是按字母表順序插入
QComboBox 發出一個currentIndexChanged(int) 的信號.
QComboBox 得到當前項 currentIndex() + 1 #QComboBox 默認的currentIndex為 -1
QComboBox.findText('dsfds') #返回 內容為dsfds的索引
QComboBox 得到當前項文本內容 currentText()
fromSpinBox = QDoubleSpinBox()
fromSpinBox.setRange(0.01, 10000000.00)
fromSpinBox.setSuffix(" %d") #設置后綴 如顯示 10.0%d
fromSpinBox.setPrefix('#d') #設置前綴
fromSpinBox.setValue(1.00) 設置值
QDoubleSpinBox 發出 valueChanged(double) 信號 有setValue(double)插槽
PyQt4 formLayout
self
.formGroupBox
=
QtGui.QGroupBox(
"Form layout"
)
layout
=
QtGui.QFormLayout()
layout.addRow(QtGui.QLabel(
"Line 1:"
), QtGui.QLineEdit())
layout.addRow(QtGui.QLabel(
"Line 2, long text:"
), QtGui.QComboBox())
layout.addRow(QtGui.QLabel(
"Line 3:"
), QtGui.QSpinBox())
self
.formGroupBox.setLayout(layout)