读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.mzph.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;但代价是使低级编程变得更加困难。 幸…