讀Pyqt4教程,帶你入門Pyqt4 _005

對話框窗體或對話框是現代GUI應用不可或缺的一部分。dialog定義為兩個或多個人之間的交談。在計算機程序中dialog是一個窗體,用來和程序“交談”。對話框用來輸入數據、修改數據、改變程序設置等等。對話框是用戶和計算機程序溝通的重要手段。

QColorDialog

顏色對話框為定制顏色提供一個對話框組件。

#!/usr/bin/python
# -*- coding: utf-8 -*-# colordialog.pyimport sys
from PyQt4 import QtGui
from PyQt4 import QtCoreclass Example(QtGui.QWidget):def __init__(self):super(Example, self).__init__()self.initUI()def initUI(self):color = QtGui.QColor(0, 0, 0)self.button = QtGui.QPushButton('Dialog', self)self.button.setFocusPolicy(QtCore.Qt.NoFocus)self.button.move(20, 20)self.connect(self.button, QtCore.SIGNAL('clicked()'),self.showDialog)self.setFocus()self.widget = QtGui.QWidget(self)self.widget.setStyleSheet("QWidget { background-color: %s }"% color.name())self.widget.setGeometry(130, 22, 100, 100)self.setWindowTitle('ColorDialog')self.setGeometry(300, 300, 250, 180)def showDialog(self):col = QtGui.QColorDialog.getColor()if col.isValid():self.widget.setStyleSheet("QWidget { background-color: %s }"% col.name())if __name__ == '__main__':app = QtGui.QApplication(sys.argv)ex = Example()ex.show()app.exec_()

該例子顯示一個按鈕和一個 QWidge 對象。組件的背景設為黑色,我們可以用 QColorDialog 來改變它的背景。

color = QtGui.QColorDialog.getColor()

這行代碼將會彈出一個 QColorDialog

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

檢查顏色是否有效,如果點擊了取消按鈕,將返回無效的顏色。如果顏色有些,我們使用樣式修改背景顏色。

QFontDialog

QFontDialog 是一個用來選擇字體的對話框組件。

#!/usr/bin/python
# -*- coding: utf-8 -*-# fontdialog.pyimport sys
from PyQt4 import QtGui
from PyQt4 import QtCoreclass Example(QtGui.QWidget):def __init__(self):super(Example, self).__init__()self.initUI()def initUI(self):hbox = QtGui.QHBoxLayout()button = QtGui.QPushButton('Dialog', self)button.setFocusPolicy(QtCore.Qt.NoFocus)button.move(20, 20)hbox.addWidget(button)self.connect(button, QtCore.SIGNAL('clicked()'), self.showDialog)self.label = QtGui.QLabel('Knowledge only matters', self)self.label.move(130, 20)hbox.addWidget(self.label, 1)self.setLayout(hbox)self.setWindowTitle('FontDialog')self.setGeometry(300, 300, 250, 110)def showDialog(self):font, ok = QtGui.QFontDialog.getFont()if ok:self.label.setFont(font)if __name__ == '__main__':app = QtGui.QApplication(sys.argv)ex = Example()ex.show()app.exec_()

該例子中,我們有一個按鈕和一個標簽。我們用 QFontDialog 改變標簽的字體。

hbox.addWidget(self.label, 1)

我們把標簽加入到水平框布局中。設置延展因素為1,當我們選擇不同的字體時,文字可能變得更大。否則標簽可能顯示不完全。

if ok:self.label.setFont(font)

如果點擊確定,標簽的字體將會改變。

QFileDialog

QFileDialog 允許用戶選擇文件或文件夾,可選擇文件來打開和保存。

#!/usr/bin/python
# -*- coding: utf-8 -*-# openfiledialog.pyimport sys
from PyQt4 import QtGui
from PyQt4 import QtCoreclass 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()self.setFocus()openFile = QtGui.QAction(QtGui.QIcon('open.png'), 'Open', self)openFile.setShortcut('Ctrl+O')openFile.setStatusTip('Open new File')self.connect(openFile, QtCore.SIGNAL('triggered()'), self.showDialog)menubar = self.menuBar()fileMenu = menubar.addMenu('&File')fileMenu.addAction(openFile)self.setGeometry(300, 300, 350, 300)self.setWindowTitle('OpenFile')def showDialog(self):filename = QtGui.QFileDialog.getOpenFileName(self, 'Open file','/home')fname = open(filename)data = fname.read()self.textEdit.setText(data)app = QtGui.QApplication(sys.argv)
ex = Example()
ex.show()
app.exec_()

這個例子顯示一個菜單,中間放置一個文本編輯框,還有一個狀態欄。狀態機僅為了設計目的顯示。菜單項顯示 QFileDialog 來選擇文件,文件的內容加載進文本編輯器。

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

這個例子建立在 QMainWindow 組件上,因為我們需要在中間設置文本編輯器。

fname = open(filename)
data = fname.read()
self.textEdit.setText(data)

讀取選擇的文件,并把文件內容放入文本編輯器。

fname = open(filename)
data = fname.read()
self.textEdit.setText(data)

讀取選擇的文件,并把文件內容放入文本編輯器。

PyQt4教程這的部分我們致力于布局管理。

?

?

本站文章為?寶寶巴士 SD.Team?原創,轉載務必在明顯處注明:(作者官方網站:?寶寶巴士?)?
轉載自【寶寶巴士SuperDo團隊】?原文鏈接:?http://www.cnblogs.com/superdo/p/4528239.html

?

?

轉載于:https://www.cnblogs.com/superdo/p/4528239.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375005.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375005.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375005.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux內核的啟動過程分析

秦鼎濤 《Linux內核分析》MOOC課程http://mooc.study.163.com/course/USTC-1000029000  一、實驗目的及要求: 使用gdb跟蹤調試內核從start_kernel到init進程啟動 詳細分析從start_kernel到init進程啟動的過程并結合實驗截圖撰寫一篇署名博客,并在博客文…

static修飾符詳解

static表示“全局”或者“靜態”的意思,用來修飾成員變量和成員方法,也可以形成靜態static代碼塊,但是Java語言中沒有全局變量的概念。被static修飾的成員變量和成員方法獨立于該類的任何對象。也就是說,它不依賴類特定的實例&…

四則運算2+psp0

程序要求: 1.題目避免重復 2.可定制(數量\打印方式) 3.可以一下控制參數 ① 是否有乘除法 ② 是否有括號(最多支持十個數參與運算) ③ 數值范圍 ④加減有無負數 ⑤除法有無余數 分析:① 如果是兩個數…

kettle作業中的js如何寫日志文件

在kettle作業中JavaScript腳本有時候也扮演非常重要的角色,此時我們希望有一些日志記錄。下面是job中JavaScript記錄日志的方式。 job的js寫日志的方法。 得到日志輸出實例 org.pentaho.di.core.logging.LogWriter.getInstance();按照日志的級別輸出: pu…

淺析Kerberos原理,及其應用和管理

文章作者:luxianghao 文章來源:http://www.cnblogs.com/luxianghao/p/5269739.html 轉載請注明,謝謝合作。 免責聲明:文章內容僅代表個人觀點,如有不當,歡迎指正。 --- 一,引言 Kerberos簡單來…

2014! 的末尾有多少個0

2014&#xff01; 的末尾有多少個0<?xml version"1.0" encoding"UTF-8"?> 假設 末尾有 k 個0&#xff0c;所以 2014&#xff01; x * 10^k ; 10 ^ k &#xff08;2 * 5 &#xff09;^ k 2^k * 5^k, 明顯所有數字中因數含有2的數字多于含有5的數…

[轉載]一句話插配置文件

http://www.t00ls.net/viewthread.php?tid13901 一句話插入配置文件system.asp沒有過濾雙引號&#xff0c;插入一句就行。常規插法如下&#xff1a;"%><%eval request("d")%><%但金刀客這篇文件&#xff08;http://www.cqzh.cn/post/328.html&…

android插件化-獲取apkplug框架已安裝插件-03

上一篇文章成功的將apkplug框架嵌入了應用中而且啟動 鏈接http://www.apkplug.com/blog/?post10 這一篇文章實現怎樣獲取全部已安裝插件 一 獲取框架的SystemBundle的上下文BundleContext apkplug框架啟動會自己主動創建一個SystemBundle, 它是框架的第一個插件不可停止和卸…

Java實現棧。

定義一個接口MyStack接口&#xff1a; package Stack; public interface MyStack<T> { boolean isEmpty(); int length(); boolean push(T date); T pop();} 數組實現&#xff1a; package Stack; public class ArrayStack<T> implements MyStack<T>{ privat…

轉載]SA權限九種上傳方法

剛看了一種方法&#xff0c;如果是注入點&#xff0c;利用管中窺豹以二進制的方式上傳&#xff0c;上傳的時候最好改下名&#xff0c;比如do.exe&#xff0c;上傳到目標服務器可以改成do.cmd&#xff0c;等傳上去之后用copy 命令改回來。 當然用啊d也可以上傳&#xff0c;還有…

asp.net 導出Excel

asp.net 導出Excel 分享一個asp.net 導出假Excel代碼。優點&#xff0c;不用借助于任何插件比如&#xff08;NPOI&#xff09;,復制代碼&#xff0c;修改grid.DataSource直接導出。 先看導出后的效果圖 1 System.Web.UI.WebControls.DataGrid grid new DataGrid();2 …

bzoj 2300 動態維護上凸殼(不支持刪除)

新技能GET。 用set保存點&#xff0c;然后只需要找前趨和后繼就可以動態維護了。 1 /**************************************************************2 Problem: 23003 User: idy0024 Language: C5 Result: Accepted6 Time:556 ms7 Memory:4824 kb8 …

帶有Guice的富域模型

貧血域模型是一個非常常見的反模式。 在ORM和DI框架的世界中&#xff0c;我們自然會發現自己擁有一個由ORM管理的“域”&#xff0c;該域包含所有數據且無行為。 通過我們的DI框架有幫助地注入了輔助類&#xff0c;這些輔助類都是行為且沒有數據。 在本文中&#xff0c;我將介紹…

php匿名函數小示例

<?php //$fun function($params){ // echo $params; //}; // //$fun(aa);//例一 //在普通函數中定義一個匿名函數 //function printStr(){ // $fun function($something){ // echo $something; // }; // $fun(something); // //} //printStr();//例子…

購書心得

作者&#xff1a;泉哥主頁&#xff1a;http://riusksk.blogbus.com富家不用買良田&#xff0c;書中自有千鐘粟&#xff1b;安居不用架高堂&#xff0c;書中自有黃金屋&#xff1b;出門莫恨無人隨&#xff0c;書中車馬多如簇&#xff1b;娶妻莫恨無良媒&#xff0c;書中自有顏如…

MariaDB?條件語句WHERE

MariaDB 條件語句WHEREWHERE Clause Operators Operator Description Equality<> Nonequality! Nonequality< Less than< Less than or equal to > Greater than > Greater than or equal to BETWEEN Between two specified values BETWEEN AND (jlive)[c…

Spring 3.1緩存抽象教程

即將發布的Spring 3.1版本中引入的新功能之一是緩存抽象之一 。 Spring Framework提供了對將緩存透明添加到現有Spring應用程序中的支持。 與事務支持類似&#xff0c;緩存抽象允許一致使用各種緩存解決方案&#xff0c;而對代碼的影響最小。 從本質上講&#xff0c;抽象將緩存…

《Linux內核分析》 第四節 扒開系統調用的三層皮(上)

黃胤凱 原創作品轉載請注明出處 《Linux內核分析》MOOC課程http://mooc.study.163.com/course/USTC-1000029000 一、視頻學習 1.系統調用的三層皮&#xff1a;xyz system_call sys_xyz 對應的是API&#xff0c;中斷向量對應的中斷服務程序&#xff0c;系統調用服務程…

如何在Java中獲得類似于C的性能

總覽 Java有許多可能很慢的領域。 但是&#xff0c;對于每個問題都有解決方案。 許多解決方案/黑客都需要解決Java的保護問題&#xff0c;但是如果您需要低水平的性能&#xff0c;還是可以的。 Java使高級編程變得更簡單容易&#xff0c;但代價是使低級編程變得更加困難。 幸…