1. 程式人生 > >PyQt4 學習筆記6之控制元件

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()

在上面的示例中,我們建立了一個複選框用於切換視窗的標題。

Check Box

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的背景色為黑色。開關按鈕將切換紅、綠、藍的顏色值,背景顏色取決於我們按下的按鈕。

Toggle Button

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()

在上面的示例中,我們模擬了一個音量控制(原文中使用的是圖片,在此處我將其改為文字了)。通過拉動滑塊,可以改變標籤上的文字。

Slider

4 進度條(QtGui.QProgressBar

當執行長時間的任務時,進度條可用於展示當前執行的進度。它是基於動畫的,這樣使用者就可以很清楚地知道任務的進展情況。在PyQt4中,QtGui.QProgress提供了水平和垂直兩種進度條工具。程式設計人員可以設定進度條的最小值和最大值,預設分別為099

#!/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()

在上述例子中,我們建立了一個水平進度條和一個按鈕,按鈕用於控制進度條的開始和停止。

Progress Bar

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()

上述示例程式中包含一個日曆控制元件和一個標籤控制元件。當前選中的日期將會在標籤控制元件上顯示。

Calender

相關推薦

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