读Pyqt4教程,带你入门Pyqt4 _005

对话框窗体或对话框是现代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教程这的部分我们致力于布局管理。

 

 读Pyqt4教程,带你入门Pyqt4 _005

本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 
转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4528239.html

 

 

你可能感兴趣的:(qt)