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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259
