对话框窗体或对话框是现代GUI应用不可或缺的一部分。dialog定义为两个或多个人之间的交谈。在计算机程序中dialog是一个窗体,用来和程序“交谈”。对话框用来输入数据、修改数据、改变程序设置等等。对话框是用户和计算机程序沟通的重要手段。

QColorDialog

颜色对话框为定制颜色提供一个对话框组件。

#!/usr/bin/python
# -*- coding: utf-8 -*- # colordialog.py import sys
from PyQt4 import QtGui
from PyQt4 import QtCore class 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.py import sys
from PyQt4 import QtGui
from PyQt4 import QtCore class 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.py import sys
from PyQt4 import QtGui
from PyQt4 import QtCore 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()
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

读Pyqt4教程,带你入门Pyqt4 _005的更多相关文章

  1. 读Pyqt4教程,带你入门Pyqt4 _009

    QLineEdit QLineEdit 窗口组件用来输入或者编辑单行纯文本,有撤销/重做,剪切/粘贴和拖放功能. #!/usr/bin/python # -*- coding: utf-8 -*- # ...

  2. 读Pyqt4教程,带你入门Pyqt4 _004

    在PyQt4教程的这部分中,我们将探讨应用中事件和信号的发生. 事件是GUI程序的重要部分,由用户或者系统产生.当我们调用应用的 exec_() 方法,应用进入主循环.主循环获取事件并把它们发往对象. ...

  3. 读Pyqt4教程,带你入门Pyqt4 _003

    编程中的一个重要事情是布局管理,布局管理是如何在窗体上摆放窗口组件.可以有两种方式进行管理:绝对定位或使用布局类. 绝对定位 程序员用像素指定每个控件的位置和尺寸.使用绝对定位时,你必须理解几件事情. ...

  4. 读Pyqt4教程,带你入门Pyqt4 _002

    在这节教程中,我们将创建菜单和工具栏. QMainWindow 类提供应用程序主窗口,可以创建一个经典的拥有状态栏.工具栏和菜单栏的应用程序骨架. 菜单栏 菜单栏是GUI应用程序最明显的部分之一,这是 ...

  5. 读Pyqt4教程,带你入门Pyqt4 _013

    你是否曾经看着应用程序并思考特定的GUI项是如何产生的?大概每位程序员都这样过.然后你能看到你喜欢的GUI库提供的一系列窗口组件,但是你无法找到它.工具包通常仅仅提供最常用的窗口组件,比如按钮.文本组 ...

  6. 读Pyqt4教程,带你入门Pyqt4 _012

    颜色 颜色是指一个代表红(Red).绿(Green).蓝(Blue)(RGB)强度值组合的对象,有效的RGB值在0~255之间.我们可以用多种方式定义颜色,最常用的是RGB十进制或者十六进制值.也可以 ...

  7. 读Pyqt4教程,带你入门Pyqt4 _010

    在PyQt4教程的这部分中,我们讨论拖放操作. 拖放(Drag-and-drop)指的是图形用户界面(Graphical user interface)中,在一个虚拟的对象上按着鼠标键将之拖曳到另一个 ...

  8. 读Pyqt4教程,带你入门Pyqt4 _006

    窗口组件是应用程序的基本构建块.PyQt4编程工具包拥有范围广泛的各种窗口组件.按钮.选择框.滑块.列表框等等,程序员工作所需要的一切.在教程的这部分中,我们将介绍一些有用的窗口组件. QCheckB ...

  9. 读Pyqt4教程,带你入门Pyqt4 _008

    QCalendarWidget QCalendarWidget 提供基于月份的日历窗口组件,它允许用户简单并且直观的选择日期. #!/usr/bin/python # -*- coding: utf- ...

随机推荐

  1. keras-深度学习处理文本数据

    深度学习用于自然语言处理是将模式识别应用于单词.句子和段落,这与计算机视觉是将模式识别应用于像素大致相同.深度学习模型不会接收原始文本作为输入,它只能处理数值张量,因此我们必须将文本向量化(vecto ...

  2. libevent(三)event_base

    libevent能够处理三种事件: I/O.定时器.信号. event_base 统一管理所有事件. struct event_base { const struct eventop *evsel; ...

  3. Python爬虫(三)爬淘宝MM图片

    直接上代码: # python2 # -*- coding: utf-8 -*- import urllib2 import re import string import os import shu ...

  4. 「译」JVM是如何使用那些你从未听过的x86魔幻指令实现String.compareTo的

    原文https://jcdav.is/2016/09/01/How-the-JVM-compares-your-strings/ 魔幻的String.compareTo 我们之前可能已经见过Java的 ...

  5. SpringBoot:扩展SpringMVC、定制首页、国际化

    目录 扩展使用SpringMVC 如何扩展SpringMVC 为何这么做会生效(原理) 全面接管SpringMVC 首页实现 页面国际化 SpringBoot扩展使用SpringMVC.使用模板引擎定 ...

  6. RabbitMQ的轮询模式和公平分发

    一.常用的消息模式 我们在工作的使用中,经常会遇到多个消费者监听同一个队列的情况,模型如下图所示: 当有多个消费者时,我们的消息会被哪个消费者消费呢,我们又该如何均衡消费者消费信息的多少呢: 主要有两 ...

  7. leetcode240——搜索二维矩阵(medium)

    一.题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以下特性: 每行的元素从左到右升序排列. 每列的元素从上到下升序排列. 示例: 现有矩阵 ...

  8. css3的 calc属性无效问题解决

    css3的 calc:计算属性. 运算符两边需要加空格,才有效. 错误示例:.mystyle{width:calc(100%-25px)}这样是不生效的 运算符"+ - * /"左 ...

  9. STM32 外部中断详解(原理+配置代码)

    本文介绍了STM32基于标准外设库的外部中断配置,以及基于参考手册如何更加寄存器配置外部中断 文章目录 1 前言 2 STM32的外部中断 3 中断服务函数的映射关系 4 外部中断的配置 5 寄存器的 ...

  10. Sharding JDBC整合SpringBoot 2.x 和 MyBatis Plus 进行分库分表

    Sharding JDBC整合SpringBoot 2.x 和 MyBatis Plus 进行分库分表 交易所流水表的单表数据量已经过亿,选用Sharding-JDBC进行分库分表.MyBatis-P ...