|
Posted on 2011-05-18 07:37 RTY 阅读(2888) 评论(0) 编辑 收藏 引用 所属分类: Qt 、 Python
1#!/usr/bin/env python 2 3 4############################################################################# 5## 6## Copyright (C) 2010 Riverbank Computing Limited. 7## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). 8## All rights reserved. 9## 10## This file is part of the examples of PyQt. 11## 12## $QT_BEGIN_LICENSE:BSD$ 13## You may use this file under the terms of the BSD license as follows: 14## 15## "Redistribution and use in source and binary forms, with or without 16## modification, are permitted provided that the following conditions are 17## met: 18## * Redistributions of source code must retain the above copyright 19## notice, this list of conditions and the following disclaimer. 20## * Redistributions in binary form must reproduce the above copyright 21## notice, this list of conditions and the following disclaimer in 22## the documentation and/or other materials provided with the 23## distribution. 24## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor 25## the names of its contributors may be used to endorse or promote 26## products derived from this software without specific prior written 27## permission. 28## 29## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 30## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 31## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 32## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 33## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 34## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 35## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 36## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 37## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 38## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 39## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." 40## $QT_END_LICENSE$ 41## 42############################################################################# 43 44 45from PyQt4 import QtCore, QtGui 46 47 48class WidgetGallery(QtGui.QDialog): 49 def __init__(self, parent=None): 50 super(WidgetGallery, self).__init__(parent) 51 52 self.originalPalette = QtGui.QApplication.palette() 53 54 styleComboBox = QtGui.QComboBox() 55 styleComboBox.addItems(QtGui.QStyleFactory.keys()) 56 57 styleLabel = QtGui.QLabel("&Style:") 58 styleLabel.setBuddy(styleComboBox) 59 60 self.useStylePaletteCheckBox = QtGui.QCheckBox("&Use style's standard palette") 61 self.useStylePaletteCheckBox.setChecked(True) 62 63 disableWidgetsCheckBox = QtGui.QCheckBox("&Disable widgets") 64 65 self.createTopLeftGroupBox() 66 self.createTopRightGroupBox() 67 self.createBottomLeftTabWidget() 68 self.createBottomRightGroupBox() 69 self.createProgressBar() 70 71 styleComboBox.activated[str].connect(self.changeStyle) 72 self.useStylePaletteCheckBox.toggled.connect(self.changePalette) 73 disableWidgetsCheckBox.toggled.connect(self.topLeftGroupBox.setDisabled) 74 disableWidgetsCheckBox.toggled.connect(self.topRightGroupBox.setDisabled) 75 disableWidgetsCheckBox.toggled.connect(self.bottomLeftTabWidget.setDisabled) 76 disableWidgetsCheckBox.toggled.connect(self.bottomRightGroupBox.setDisabled) 77 78 topLayout = QtGui.QHBoxLayout() 79 topLayout.addWidget(styleLabel) 80 topLayout.addWidget(styleComboBox) 81 topLayout.addStretch(1) 82 topLayout.addWidget(self.useStylePaletteCheckBox) 83 topLayout.addWidget(disableWidgetsCheckBox) 84 85 mainLayout = QtGui.QGridLayout() 86 mainLayout.addLayout(topLayout, 0, 0, 1, 2) 87 mainLayout.addWidget(self.topLeftGroupBox, 1, 0) 88 mainLayout.addWidget(self.topRightGroupBox, 1, 1) 89 mainLayout.addWidget(self.bottomLeftTabWidget, 2, 0) 90 mainLayout.addWidget(self.bottomRightGroupBox, 2, 1) 91 mainLayout.addWidget(self.progressBar, 3, 0, 1, 2) 92 mainLayout.setRowStretch(1, 1) 93 mainLayout.setRowStretch(2, 1) 94 mainLayout.setColumnStretch(0, 1) 95 mainLayout.setColumnStretch(1, 1) 96 self.setLayout(mainLayout) 97 98 self.setWindowTitle("Styles") 99 self.changeStyle('Windows') 100 101 def changeStyle(self, styleName): 102 QtGui.QApplication.setStyle(QtGui.QStyleFactory.create(styleName)) 103 self.changePalette() 104 105 def changePalette(self): 106 if (self.useStylePaletteCheckBox.isChecked()): 107 QtGui.QApplication.setPalette(QtGui.QApplication.style().standardPalette()) 108 else: 109 QtGui.QApplication.setPalette(self.originalPalette) 110 111 def advanceProgressBar(self): 112 curVal = self.progressBar.value() 113 maxVal = self.progressBar.maximum() 114 self.progressBar.setValue(curVal + (maxVal - curVal) / 100) 115 116 def createTopLeftGroupBox(self): 117 self.topLeftGroupBox = QtGui.QGroupBox("Group 1") 118 119 radioButton1 = QtGui.QRadioButton("Radio button 1") 120 radioButton2 = QtGui.QRadioButton("Radio button 2") 121 radioButton3 = QtGui.QRadioButton("Radio button 3") 122 radioButton1.setChecked(True) 123 124 checkBox = QtGui.QCheckBox("Tri-state check box") 125 checkBox.setTristate(True) 126 checkBox.setCheckState(QtCore.Qt.PartiallyChecked) 127 128 layout = QtGui.QVBoxLayout() 129 layout.addWidget(radioButton1) 130 layout.addWidget(radioButton2) 131 layout.addWidget(radioButton3) 132 layout.addWidget(checkBox) 133 layout.addStretch(1) 134 self.topLeftGroupBox.setLayout(layout) 135 136 def createTopRightGroupBox(self): 137 self.topRightGroupBox = QtGui.QGroupBox("Group 2") 138 139 defaultPushButton = QtGui.QPushButton("Default Push Button") 140 defaultPushButton.setDefault(True) 141 142 togglePushButton = QtGui.QPushButton("Toggle Push Button") 143 togglePushButton.setCheckable(True) 144 togglePushButton.setChecked(True) 145 146 flatPushButton = QtGui.QPushButton("Flat Push Button") 147 flatPushButton.setFlat(True) 148 149 layout = QtGui.QVBoxLayout() 150 layout.addWidget(defaultPushButton) 151 layout.addWidget(togglePushButton) 152 layout.addWidget(flatPushButton) 153 layout.addStretch(1) 154 self.topRightGroupBox.setLayout(layout) 155 156 def createBottomLeftTabWidget(self): 157 self.bottomLeftTabWidget = QtGui.QTabWidget() 158 self.bottomLeftTabWidget.setSizePolicy(QtGui.QSizePolicy.Preferred, 159 QtGui.QSizePolicy.Ignored) 160 161 tab1 = QtGui.QWidget() 162 tableWidget = QtGui.QTableWidget(10, 10) 163 164 tab1hbox = QtGui.QHBoxLayout() 165 tab1hbox.setMargin(5) 166 tab1hbox.addWidget(tableWidget) 167 tab1.setLayout(tab1hbox) 168 169 tab2 = QtGui.QWidget() 170 textEdit = QtGui.QTextEdit() 171 172 textEdit.setPlainText("Twinkle, twinkle, little star,\n" 173 "How I wonder what you are.\n" 174 "Up above the world so high,\n" 175 "Like a diamond in the sky.\n" 176 "Twinkle, twinkle, little star,\n" 177 "How I wonder what you are!\n") 178 179 tab2hbox = QtGui.QHBoxLayout() 180 tab2hbox.setMargin(5) 181 tab2hbox.addWidget(textEdit) 182 tab2.setLayout(tab2hbox) 183 184 self.bottomLeftTabWidget.addTab(tab1, "&Table") 185 self.bottomLeftTabWidget.addTab(tab2, "Text &Edit") 186 187 def createBottomRightGroupBox(self): 188 self.bottomRightGroupBox = QtGui.QGroupBox("Group 3") 189 self.bottomRightGroupBox.setCheckable(True) 190 self.bottomRightGroupBox.setChecked(True) 191 192 lineEdit = QtGui.QLineEdit('s3cRe7') 193 lineEdit.setEchoMode(QtGui.QLineEdit.Password) 194 195 spinBox = QtGui.QSpinBox(self.bottomRightGroupBox) 196 spinBox.setValue(50) 197 198 dateTimeEdit = QtGui.QDateTimeEdit(self.bottomRightGroupBox) 199 dateTimeEdit.setDateTime(QtCore.QDateTime.currentDateTime()) 200 201 slider = QtGui.QSlider(QtCore.Qt.Horizontal, self.bottomRightGroupBox) 202 slider.setValue(40) 203 204 scrollBar = QtGui.QScrollBar(QtCore.Qt.Horizontal, 205 self.bottomRightGroupBox) 206 scrollBar.setValue(60) 207 208 dial = QtGui.QDial(self.bottomRightGroupBox) 209 dial.setValue(30) 210 dial.setNotchesVisible(True) 211 212 layout = QtGui.QGridLayout() 213 layout.addWidget(lineEdit, 0, 0, 1, 2) 214 layout.addWidget(spinBox, 1, 0, 1, 2) 215 layout.addWidget(dateTimeEdit, 2, 0, 1, 2) 216 layout.addWidget(slider, 3, 0) 217 layout.addWidget(scrollBar, 4, 0) 218 layout.addWidget(dial, 3, 1, 2, 1) 219 layout.setRowStretch(5, 1) 220 self.bottomRightGroupBox.setLayout(layout) 221 222 def createProgressBar(self): 223 self.progressBar = QtGui.QProgressBar() 224 self.progressBar.setRange(0, 10000) 225 self.progressBar.setValue(0) 226 227 timer = QtCore.QTimer(self) 228 timer.timeout.connect(self.advanceProgressBar) 229 timer.start(1000) 230 231 def getWidget(self, splash): 232 t = QtCore.QElapsedTimer() 233 t.start() 234 while (t.elapsed() < 5000): 235 str = QtCore.QString("times = ") + QtCore.QString.number(t.elapsed()) 236 splash.showMessage(str) 237 QtCore.QCoreApplication.processEvents() 238 239if __name__ == '__main__': 240 241 import sys 242 243 app = QtGui.QApplication(sys.argv) 244 245 #splash 246 pixmap = QtGui.QPixmap(u"C:\\Users\\anlin\\Pictures\\13.png") 247 splash = QtGui.QSplashScreen(pixmap) 248 label = QtGui.QLabel(splash) 249 label.setText("<br><br>Foxreal") 250 label.setAlignment(QtCore.Qt.AlignRight) 251 splash.show() 252 QtCore.QCoreApplication.processEvents() 253 254 #main window 255 gallery = WidgetGallery() 256 splash.finish(gallery.getWidget(splash)) 257 gallery.show() 258 sys.exit(app.exec_()) 259
|