使用PyQt 制作简单的启动界面的例子代码

  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
 45 from  PyQt4  import  QtCore, QtGui
 46
 47
 48 class  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
239 if   __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

你可能感兴趣的:(使用PyQt 制作简单的启动界面的例子代码)