PyQt4 學習筆記6之控制元件
PyQt4 控制元件
單擊此處檢視原文。
部件(widgets)是應用程式的基本構建塊。PyQt4包含廣泛的各種部件,包括按鈕、單選框、滑動塊和列表框等。在本節中,主要介紹PyQt4中幾個常用的部件:QtGui.QCheckBox, ToggleButton, QtGui.QSlider, QtGui.QProgressBar, QtGui.QCalendarWidget。
1 複選框(QtGui.QCheckBox)
#!/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):
cb = QtGui.QCheckBox('Show title', self)
cb.move(20, 20)
# 由於我們在後面設定了視窗標題,因此需要選中該複選框。
cb.toggle()
# 將自定義的changeTitle()方法與stateChanged訊號關聯。
# changeTitle()方法將會切換視窗標題。
cb.stateChanged.connect(self.changeTitle)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Check Box')
self.show()
# 複選框的狀態將通過引數state傳入到changeTitle()方法中。如果
# 複選框被選中,我們設定視窗的標題;否則,我們將視窗標題設定為空。
def changeTitle(self, state) :
if state == QtCore.Qt.Checked:
self.setWindowTitle('QtGui.QCheckBox')
else:
self.setWindowTitle('')
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
在上面的示例中,我們建立了一個複選框用於切換視窗的標題。
2 開關按鈕(ToggleButton)
開關按鈕是QtGui.QPushButton的一種特殊模式。該按鈕擁有兩種狀態:按下(pressed)和未按下(not pressed)。我們通過點選它,從而在這兩種狀態之間進行切換。在某些情況下,這種功能可以得到很好的應用。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.col = QtGui.QColor(0, 0, 0)
# 通過建立QPushButton並呼叫setCheckable()設定為可選擇,
# 從而建立開關按鈕。
redb = QtGui.QPushButton('Red', self)
redb.setCheckable(True)
redb.move(10, 10)
# 將按鈕點選訊號與自定義方法關聯。We use the 'clicked'
# signal that operates with Boolean value.
# (備註:不太清楚該如何翻譯。)
redb.clicked[bool].connect(self.setColor)
greenb = QtGui.QPushButton('Green', self)
greenb.setCheckable(True)
greenb.move(10, 60)
greenb.clicked[bool].connect(self.setColor)
blueb = QtGui.QPushButton('Blue', self)
blueb.setCheckable(True)
blueb.move(10, 110)
blueb.clicked[bool].connect(self.setColor)
self.square = QtGui.QFrame(self)
self.square.setGeometry(150, 20, 100, 100)
self.square.setStyleSheet("QWidget { background-color: %s }" % self.col.name())
self.setGeometry(300, 300, 280, 170)
self.setWindowTitle('Toggle Button')
self.show()
def setColor(self, pressed):
# 獲取那個按鈕按下。
source = self.sender()
if pressed:
val = 255
else:
val = 0
if source.text() == 'Red':
self.col.setRed(val)
elif source.text() == 'Green':
self.col.setGreen(val)
else:
self.col.setBlue(val)
# 改變背景顏色。
self.square.setStyleSheet('QWidget { background-color: %s }' % self.col.name())
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
在上述的示例中,我們建立了三個開關按鈕和一個QtGui.QWidget,並設定QtGui.QWidget的背景色為黑色。開關按鈕將切換紅、綠、藍的顏色值,背景顏色取決於我們按下的按鈕。
3 滑動塊(QtGui.QSlider)
QtGui.QSlider是擁有一個簡單處理的部件,它可以向前或向後拉動。通過這種方式,我們可以為特定任務選擇一個值。有時,使用滑動塊比讓使用者輸入一個值或是選值框(spin box)更為自然。
#!/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):
# 建立水平的滑塊
sld = QtGui.QSlider(QtCore.Qt.Horizontal, self)
sld.setFocusPolicy(QtCore.Qt.NoFocus)
sld.setGeometry(30, 40, 100, 30)
# 將valueChanged訊號與自定義方法關聯。
sld.valueChanged[int].connect(self.changeValue)
self.label = QtGui.QLabel(self)
self.label.setText('mute')
self.label.setGeometry(160, 40, 80, 30)
self.setGeometry(300, 300, 280, 170)
self.setWindowTitle('Slider')
self.show()
def changeValue(self, value):
# 通過滑塊的值,我們可以改變標籤的文字。
if value == 0:
self.label.setText('mute')
elif value > 0 and value <= 30:
self.label.setText('min')
elif value > 30 and value < 80:
self.label.setText('med')
else:
self.label.setText('max')
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
在上面的示例中,我們模擬了一個音量控制(原文中使用的是圖片,在此處我將其改為文字了)。通過拉動滑塊,可以改變標籤上的文字。
4 進度條(QtGui.QProgressBar)
當執行長時間的任務時,進度條可用於展示當前執行的進度。它是基於動畫的,這樣使用者就可以很清楚地知道任務的進展情況。在PyQt4中,QtGui.QProgress提供了水平和垂直兩種進度條工具。程式設計人員可以設定進度條的最小值和最大值,預設分別為0和99。
#!/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):
# 建立進度條
self.pbar = QtGui.QProgressBar(self)
self.pbar.setGeometry(30, 40, 200, 25)
self.btn = QtGui.QPushButton('Start', self)
self.btn.move(40, 80)
self.btn.clicked.connect(self.doAction)
# 採用定時器啟用進度條
self.timer = QtCore.QBasicTimer()
self.step = 0
self.setGeometry(300, 300, 280, 170)
self.setWindowTitle('Progress Bar')
self.show()
# 每個QtCore.QObject物件及其子類都有一個timeEvent()的事件處理程式
# 為了響應定時器,需要重新實現事件處理程式
def timerEvent(self, e):
if self.step >= 100:
self.timer.stop()
self.btn.setText('Finished')
return
self.step = self.step + 1
self.pbar.setValue(self.step)
# 啟動或停止定時器
def doAction(self):
if self.timer.isActive():
self.timer.stop()
self.btn.setText('Start')
else:
# 通過start()方法啟動定時器,該方法有兩個引數:超時時間
# 和接收事件的物件
self.timer.start(100, self)
self.btn.setText('Stop')
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
在上述例子中,我們建立了一個水平進度條和一個按鈕,按鈕用於控制進度條的開始和停止。
5 日曆控制元件(QtGui.QCalenderWidget)
QtGui.QCalenderWidget提供了基於月的日曆控制元件。它允許使用者以一種簡單而直觀的方式選擇日期。
#!/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):
# 建立日曆控制元件
cal = QtGui.QCalendarWidget(self)
cal.setGridVisible(True)
cal.move(20, 20)
# 當從日曆控制元件上選擇日期時,clicked[QtCore.QDate]將會
# 觸發,我們將該訊號與showDate()方法關聯
cal.clicked[QtCore.QDate].connect(self.showDate)
self.lbl = QtGui.QLabel(self)
# 獲取選中的日期,轉換為字串,並在標籤控制元件上顯示
date = cal.selectedDate()
self.lbl.setText(date.toString())
self.lbl.move(200, 240)
self.setGeometry(300, 300, 490, 300)
self.setWindowTitle('Check Box')
self.show()
def showDate(self, date):
self.lbl.setText(date.toString())
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
上述示例程式中包含一個日曆控制元件和一個標籤控制元件。當前選中的日期將會在標籤控制元件上顯示。
相關推薦
PyQt4 學習筆記6之控制元件
PyQt4 控制元件 單擊此處檢視原文。 部件(widgets)是應用程式的基本構建塊。PyQt4包含廣泛的各種部件,包括按鈕、單選框、滑動塊和列表框等。在本節中,主要介紹PyQt4中幾個常用的部件:QtGui.QCheckBox, ToggleButton
kettle學習筆記008之轉換元件
轉換元件主要是在轉換中起到加工處理的作用。 介紹:排序記錄,去除重複記錄,拆分欄位,欄位選擇。 注意:在使用【去除重複記錄】元件之前一定要對去重的欄位進行排序 使用一個小示例來介紹這幾個元件的使用,資料準備如下: 要求目標表資料如下,即需要把原資料中name列
Kettle學習筆記009之指令碼元件
主要介紹 【Java程式碼】元件,【SQL】元件,【Shell】元件 【Java程式碼】元件 序言: 【Java程式碼】元件是個自定義外掛,用於當Kettle內建的元件無法滿足需要的時候。 例項目標:把中文字串轉為拼音 第一步:將寫好的getPinYin方法整塊
IOS開發學習筆記十三 UIScrollView控制元件實現輪播圖
效果圖:專案地址 程式碼: #import "ViewController.h" @interface ViewController ()<UIScrollViewDelegate> @property (weak, nonatomic) IBOutlet
多執行緒學習筆記二之JUC元件
概述 為了對共享資源提供更細粒度的同步控制,JDK5新增了java.util.concurrent(JUC)併發工具包,併發包新增了Lock介面(以及相關實現類)用來實現鎖功能,它提供了與synchronized關鍵字相似的同步功能,只是在使用時需要顯式地獲取和釋放鎖,還具備內建鎖不具備的自由操作鎖
WPF學習(6)-控制元件
控制元件是微軟給我們封裝的一系列現成的工具,我們可以使用這些工具,快速地部署我們想要的介面,當然,這些控制元件是非常強大的,所以就要求我們需要對這些控制元件非常瞭解,那麼就可以做出非常厲害的介面。 首先,wp
學習筆記-ListView中控制元件的重新整理-setTag的兩種用法
在ListView中,有時候需要動態更新其中某些控制元件的內容。更新的方法有以下幾個: 方法一:更新所有item的資訊 在更新後,直接呼叫adapter.notifyDataSetChanged(); 但是這是最耗資源的做法。通常我們只想更新一個item中的其中某個vie
Python學習筆記:常用控制元件
按鈕(Button及其家族)· 功能:接受使用者的點選事件,觸發相應的操作。· 常用按鈕:wx.Button:文字按鈕wx.BitmapButton:點陣圖按鈕wx.ToggleButton:開關按鈕· 繫結處理按鈕點選的事件選單(Menu及其元件)wxPython用於建立選
PyQt4 學習筆記5之對話方塊
PyQt4中的對話方塊 單擊此處檢視原文。 對話方塊視窗或對話方塊時現代GUI程式不可或缺的一部分。對話方塊被定義為兩個或兩個以上的人之間的談話。在計算機應用程式中,對話方塊用於和應用程式“談話”。一個對話方塊可以用於輸入資料、修改資料、改變應用程式配置等。
QT學習筆記11常用控制元件
Qt為我們應用程式介面開發提供的一系列的控制元件,下面我們介紹兩種最常用的兩種,所有控制元件的使用方法我們都可以通過幫助文件獲取。 1 QLabel控制元件使用 QLabel是我們最常用的控制元件之一,其功能很強大,我們可以用來顯示文字,圖片和動畫等。 顯示文字 (普
C#開發學習筆記:向Dev控制元件庫中的GridControl新增自定義複選框
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">Dev控制元件庫自帶的有複選框列,預設是不顯示狀態,如果需要則設定相關
【Unity 3D】學習筆記二:Button控制元件(按鈕)
Unity 學習筆記二 學習資料:《Unity 3D遊戲開發》 宣雨鬆 玩過的遊戲也不少,恐怕到現在也沒有見過哪一款遊戲會沒有按鈕控制元件。即使如此,我也不是很喜歡按鈕這個控制元件。對著平的螢幕摸按鈕,總給我一種不實在的感覺吧。也許在未來,按鈕以及其他的控制元件,會被人
Scala學習筆記一之基礎語法,條件控制,循環控制,函數,數組,集合
new 增強 指定位置 因此 手動 tex class break 減少 前言:Scala的安裝教程:http://www.cnblogs.com/biehongli/p/8065679.html 1:Scala之基礎語法學習筆記: 1:聲明val變量:可以使用va
Kettle學習筆記007之轉換--輸出元件
介紹三個表輸出元件:Excel輸出 ,文字檔案輸出,表輸出 一. Excel輸出元件 1. Kettle 提供兩種Excel元件。【Excel輸出】【Microsoft Excel輸出】 a.【Excel輸出】只能輸出為Excel 2007之前(xls)格式
Kettle學習筆記006之轉換----輸入元件
這裡展示兩個常用的輸入元件:Excel輸入元件 和 表輸入元件 1. Excel輸入元件 位置: 核心物件 ---> 輸入 --->Excel輸入 (1) 該元件的配置頁上有三個帶感嘆號的標籤頁,表示必填 (2) 第一步:選擇表格型別(引擎)
Web前端學習筆記——VueJS之元件、路由
定義Vue元件 什麼是元件: 元件的出現,就是為了拆分Vue例項的程式碼量的,能夠讓我們以不同的元件,來劃分不同的功能模組,將來我們需要什麼樣的功能,就可以去呼叫對應的元件即可; 元件化和模組化的不同: 模組化: 是從程式碼邏輯的角度進行劃分的;方便程式碼分層
RocketMQ學習筆記三之【DefaultMQPushConsumer流量控制】
上一節我們已經把DefaultMQPushConsumer的大體流程分析了一下,從這節開始我們分析一部分訊息處理的細節問題。 繼續在DefaultMQPushConsumerImpl的pullMessage方法中有個ProcessQueue,待會我們來分析這個佇列的作用。 public voi
Web前端學習筆記——AngularJS之元件、模板語法
目錄 元件 元件的定義 元件的模板 元件通訊 小結 動態元件 模板語法 插值 文字繫結 屬性繫結 列表渲染 條件渲染 NgIf 事件處理 文字 多行文字 複選框 Class St
python學習筆記6(條件迴圈控制語句)
條件迴圈控制語句 if-elif-else語句 格式: if 表示式1: 語句1 elif 表示式2: 語句2 …… elif 表示式n: 語句n else: #可有可無 語句e 邏輯:當程式執行到if-elif-else語句時,首先計算“表示式1”的值,如果“表示式1”的值為真,則
WPF 學習之控制元件模板 ControlTemplate Triggers
控制元件模板ControlTemplate,有兩部分:VistualTree視覺樹,即是能看到的外觀;Trigger觸發器,裡面包括外部條件達到某一條件下會引起的響應。 <Window.Resources> <ControlTemplate x:Key="ButtonT