1. 程式人生 > >PyQt4入門學習筆記(五)

PyQt4入門學習筆記(五)

PyQt4裡的對話方塊

對話方塊是大多數GUI應用中不可分割的一部分。一個對話方塊是兩者或多者的會話。在GUI內,對話方塊是應用向人說話的方式。一個對話方塊可以用來輸入資料,修改資料,改變應用設定等等。

QtGui.QInputDialog

QtGui.QInputDialog給使用者提供了一個簡單方便的對話方塊來獲取值。輸入的值可以使字串,一個數字,或者是一個列表中的元素。

#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
ZetCode PyQt4 tutorial 

In this example, we receive data from
a QtGui.QInputDialog dialog. 

author: Jan Bodnar
website: zetcode.com 
last edited: October 2011
"""

import sys
from PyQt4 import QtGui


class Example(QtGui.QWidget):
    
    def __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    def initUI(self):      

        self.btn = QtGui.QPushButton('Dialog', self)
        self.btn.move(20, 20)
        self.btn.clicked.connect(self.showDialog)
        
        self.le = QtGui.QLineEdit(self)
        self.le.move(130, 22)
        
        self.setGeometry(300, 300, 290, 150)
        self.setWindowTitle('Input dialog')
        self.show()
        
    def showDialog(self):
        
        text, ok = QtGui.QInputDialog.getText(self, 'Input Dialog', 
            'Enter your name:')
        
        if ok:
            self.le.setText(str(text))
        
def main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

例子有一個按鈕和一行編輯控制元件。點選按鈕顯示處得到文字值的對話方塊。輸入的值將會在編輯控制元件裡顯示出來。

text, ok = QtGui.QInputDialog.getText(self, 'Input Dialog', 
    'Enter your name:')

這行程式碼顯示了輸入對話方塊。第一個字串是對話方塊的標題(title),第二個字串是對話方塊裡的資訊。對話方塊返回輸入的文字值和一個boolean值。如果我們點選OK按鈕,布林值將會為真。

if ok:
    self.le.setText(str(text))

這行程式碼使應用將對話方塊收到的文字值放到編輯控制元件上。
image1

QtGui.QColorDialog

QtGui.QColorDialog提供了一個選擇顏色的對話方塊

#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
ZetCode PyQt4 tutorial 

In this example, we select a colour value
from the QtGui.QColorDialog and change the background
colour of a QtGui.QFrame widget. 

author: Jan Bodnar
website: zetcode.com 
last edited: October 2011
"""

import sys
from PyQt4 import QtGui

class Example(QtGui.QWidget):
    
    def __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    def initUI(self):      

        col = QtGui.QColor(0, 0, 0) 

        self.btn = QtGui.QPushButton('Dialog', self)
        self.btn.move(20, 20)

        self.btn.clicked.connect(self.showDialog)

        self.frm = QtGui.QFrame(self)
        self.frm.setStyleSheet("QWidget { background-color: %s }" 
            % col.name())
        self.frm.setGeometry(130, 22, 100, 100)            
        
        self.setGeometry(300, 300, 250, 180)
        self.setWindowTitle('Color dialog')
        self.show()
        
    def showDialog(self):
      
        col = QtGui.QColorDialog.getColor()

        if col.isValid():
            self.frm.setStyleSheet("QWidget { background-color: %s }"
                % col.name())
        
def main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

應用的例子顯示了一個按鈕和一個QtGui.QFrame。控制元件背景被設定成了黑色。使用QtGui.QColorDialog,我們可以改變背景顏色。

col = QtGui.QColor(0, 0, 0) 

這是QtGui.QFrame的初始背景顏色。

col = QtGui.QColorDialog.getColor() 

這一行將會彈出選擇顏色的介面。
image3

if col.isValid():
    self.frm.setStyleSheet("QWidget { background-color: %s }"
        % col.name())

我們檢查顏色是否合法,如果我們點選取消鍵,不會返回合法的顏色。如果顏色是合法的,我們改變背景顏色。
image2

QtGui.QFontDialog

QtGui.QFontDialog是一個用來改變字型的對話方塊控制元件。

#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
ZetCode PyQt4 tutorial 

In this example, we select a font name
and change the font of a label. 

author: Jan Bodnar
website: zetcode.com 
last edited: October 2011
"""

import sys
from PyQt4 import QtGui


class Example(QtGui.QWidget):
    
    def __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    def initUI(self):      

        vbox = QtGui.QVBoxLayout()

        btn = QtGui.QPushButton('Dialog', self)
        btn.setSizePolicy(QtGui.QSizePolicy.Fixed,
            QtGui.QSizePolicy.Fixed)
        
        btn.move(20, 20)

        vbox.addWidget(btn)

        btn.clicked.connect(self.showDialog)
        
        self.lbl = QtGui.QLabel('Knowledge only matters', self)
        self.lbl.move(130, 20)

        vbox.addWidget(self.lbl)
        self.setLayout(vbox)          
        
        self.setGeometry(300, 300, 250, 180)
        self.setWindowTitle('Font dialog')
        self.show()
        
    def showDialog(self):

        font, ok = QtGui.QFontDialog.getFont()
        if ok:
            self.lbl.setFont(font)
        
def main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

image4

在我們的例子裡,我們有一個按鈕和一個標籤,我們可以改變標籤的字型。

font, ok = QtGui.QFontDialog.getFont()

在這裡我們彈出了字型對話方塊。getFont()方法會返回字型的名字和ok引數。當點選ok時返回True,否則就是返回False。

if ok:
    self.label.setFont(font)

如果我們點選ok,標籤的字型會被改變。

QtGui.QFileDialog

QtGui.QFileDialog是允許使用者選擇檔案或者資料夾的對話方塊。選擇的檔案可以用來開啟或者儲存。

#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
ZetCode PyQt4 tutorial 

In this example, we select a file with a
QtGui.QFileDialog and display its contents
in a QtGui.QTextEdit.

author: Jan Bodnar
website: zetcode.com 
last edited: October 2011
"""

import sys
from PyQt4 import QtGui


class Example(QtGui.QMainWindow):
    
    def __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    def initUI(self):      

        self.textEdit = QtGui.QTextEdit()
        self.setCentralWidget(self.textEdit)
        self.statusBar()

        openFile = QtGui.QAction(QtGui.QIcon('open.png'), 'Open', self)
        openFile.setShortcut('Ctrl+O')
        openFile.setStatusTip('Open new File')
        openFile.triggered.connect(self.showDialog)

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(openFile)       
        
        self.setGeometry(300, 300, 350, 300)
        self.setWindowTitle('File dialog')
        self.show()
        
    def showDialog(self):

        fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file', 
                '/home')
        
        f = open(fname, 'r')
        
        with f:        
            data = f.read()
            self.textEdit.setText(data) 
                                
        
def main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

這個例子顯示了一個選單欄,在中心有文字編輯控制元件和一個狀態列。選單用QtGui.QFileDialog來選擇檔案。檔案的內容將會被載入到編輯控制元件上。

class Example(QtGui.QMainWindow):
    
    def __init__(self):
        super(Example, self).__init__()

因為我們將文字編輯控制元件放在了中心,所以例子是基於QtGui.QMainWindow控制元件。

fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file', 
        '/home')

我們彈出了QtGui.QFileDialog,第一個字串在getOpenFileName()方法內是字幕。第二個字串是指定對話方塊的工作目錄。預設的,檔案格式包括所有檔案(.*)

f = open(fname, 'r')

with f:        
    data = f.read()
    self.textEdit.setText(data) 

上面這段程式碼讀檔案,並且將檔案內容載入到文字編輯控制元件中。
image5

相關推薦

PyQt4入門學習筆記

PyQt4裡的對話方塊 對話方塊是大多數GUI應用中不可分割的一部分。一個對話方塊是兩者或多者的會話。在GUI內,對話方塊是應用向人說話的方式。一個對話方塊可以用來輸入資料,修改資料,改變應用設定等等。 QtGui.QInputDialog QtGui.QInputDialog給使用者提供了一個簡單方便的

Linux入門學習筆記--Shell指令碼編寫

Shell指令碼的HelloWorld:     cd /自己的路徑下     vi helloworld.sh 進入之後,預設是命令狀態,按i進入編輯模式     內容:         #! /bin/bash         echo "Hello World!"   

PyQt4入門學習筆記

在PyQt4中的事件和訊號 事件 所有的GUI應用都是事件驅動的。事件主要是來自於應用的使用者,但是像網際網路連線,視窗管理器或者計時器也可以產生事件。當我們呼叫應用的exec_()方法時,應用就進入了主迴圈。主迴圈將抓取事件並且將其傳送到對應的物件中去。 在事件模型中,有三個參與者: 事件源 事件物件

Nodejs學習筆記—Express安裝入門與模版引擎ejs

num routes 項目目錄 其中 bubuko 執行 ctrl+ ica 開發經驗 前言   前面也學習了一些Node.js的基本入門知道,現在開始進入Web開發的部分;   Node.js提供了http模塊,這個模塊中提供了一些底層接口,可以直接使用,但是直接開發網站

Nodejs學習筆記--- Express安裝入門與模版引擎ejs

目錄 前言   前面也學習了一些Node.js的基本入門知道,現在開始進入Web開發的部分;   Node.js提供了http模組,這個模組中提供了一些底層介面,可以直接使用,但是直接開發網站那還是太累了,所以http模組也不單講了,可以去看官方API:http://nodejs.org/api

機器學習筆記 octave入門

   這一節我們主要用來熟悉octave的使用。    octave和matlab一樣,主要用來數值計算和模擬。尤其精於矩陣運算:求解聯立方程組,計算矩陣特徵值和特徵向量等等。    矩陣大小:size(A)  輸出:行m,列n                      

數據結構學習筆記 樹的創建和遍歷

一個 後序遍歷 for -1 堆棧 nor ext cnblogs 復制 創建(先序創建和根據先序和中序進行創建)和遍歷(先序遍歷、中序遍歷、後序遍歷、非遞歸堆棧遍歷、層次遍歷):    package tree; public class XianCreateTree

最優化學習筆記牛頓法及擬牛頓法

div size -a article fonts alt water src jsb 最優化學習筆記(五)牛頓法及擬牛頓法

javascript學習筆記:異常捕獲和事件處理

log 類型 按鈕 輸入 button lan yellow logs 代碼 異常捕獲 Try{   發生異常的代碼塊 }catch(err){   異常信息處理 } 1 <!DOCTYPE html> 2 <html> 3 <head

Spring 學習筆記—— Bean之間的關系、作用域、自動裝配

mar byname pps etc 有時 sysman 對象實例 構造 encoding 繼承   Spring提供了配置信息的繼承機制,可以通過為<bean>元素指定parent值重用已有的<bean>元素的配置信息。 <?xml

Go語言學習筆記文件操作

see 大小 unix rdo 筆記 不能 hid code lag 加 Golang學習 QQ群共同學習進步成家立業工作 ^-^ 群號:96933959 文件讀取 os.File 封裝了文件相關操作 type File File代表一個打開的文件對象。

前端開發入門學習筆記

type red 學習 lin attach black 復合 等於 round HTML:超文本標記語言。 html:是一個基礎結構。 CSS:就是跟網頁做裝修的,修飾HTML的基礎內容:樣式。 JavaScript:一個網頁的行為,動作,動態的東西。 html標準文件格

Unity3D之Mecanim動畫系統學習筆記:Animator Controller

浮點 key 發現 菜單 融合 stat mon 好的 project 簡介 Animator Controller在Unity中是作為一種單獨的配置文件存在的文件類型,其後綴為controller,Animator Controller包含了以下幾種功能: 可以對

Python學習筆記OOP

默認 tro acl 引入 支持 不同 post set 成像 模塊 使用模塊import 模塊名。有的僅僅導入了某個模塊的一個類或者函數,使用from 模塊名 import 函數或類名實現。為了避免模塊名沖突。Python引入了按文件夾來組織模塊的方

如鵬網學習筆記MySql基礎

修改列 記錄 tex 令行 金額 升序 查詢 自動遞增 col MySQL基礎 一、數據庫概念  1,網友裝備信息、論壇帖子信息、QQ好友關系信息、學籍管理系統中的學生信息等都要“持久化”的保存到一個地方,    如果通過IO寫到文件中,那麽會非常麻煩,而且不利於多人共享數

docker學習筆記——Docker常用命令總結

docker學習筆記 docker常用命令總結 1. 開啟/停止/重啟container(start/stop/restart)容器可以通過run新建一個來運行,也可以重新start已經停止的container,但start不能夠再指定容器啟動時運行的指令,因為docker只能有一個前臺進程。容器st

jQuery學習筆記

加載 complete += ron 序列 border () ajaxstart 單選 jQuery與Ajax的應用 Ajax的優勢和不足 Ajax的優勢 a)不需要插件支持 b)優秀的用戶體驗 c)提高Web程序的性能 d)減輕服務器和寬帶的負擔 Ajax的不

流暢的python和cookbook學習筆記

pytho col () 學習 util 學習筆記 取出 minute python 1.隨機選擇   python中生成隨機數使用random模塊。   1.從序列中隨機挑選元素,使用random.choice() >>> import random

Oracle 學習筆記

采樣 flash 全表掃描 group space 表空間 manage 授權 個數 --表空間,auto: 自動管理, manual: 手動管理 create tablespace tsp1 datafile ‘D:\ORACLE\ORADATA\O10\tsp1.

Hibernate學習筆記 --- 創建基於中間關聯表的多對多映射關系

mys 兩個 override pac tid 一對多 main ber different 多對多映射是在實際數據庫表關系之間比較常見的一種,仍然以電影為例,一部電影可以有多個演員,一個演員也可以參演多部電影,電影表和演員表之間就是“多對多”的關系 針對多對多的映射關系,