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))
這行程式碼使應用將對話方塊收到的文字值放到編輯控制元件上。
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()
這一行將會彈出選擇顏色的介面。
if col.isValid():
self.frm.setStyleSheet("QWidget { background-color: %s }"
% col.name())
我們檢查顏色是否合法,如果我們點選取消鍵,不會返回合法的顏色。如果顏色是合法的,我們改變背景顏色。
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()
在我們的例子裡,我們有一個按鈕和一個標籤,我們可以改變標籤的字型。
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)
上面這段程式碼讀檔案,並且將檔案內容載入到文字編輯控制元件中。
相關推薦
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 多對多映射是在實際數據庫表關系之間比較常見的一種,仍然以電影為例,一部電影可以有多個演員,一個演員也可以參演多部電影,電影表和演員表之間就是“多對多”的關系 針對多對多的映射關系,