Last active
July 17, 2019 15:34
-
-
Save ksvbka/28a18fb6cfb49d47767e0f81db3390f0 to your computer and use it in GitHub Desktop.
Sample example contain all common widgets of PyQT5. Ref link https://build-system.fman.io/pyqt5-tutorial
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env python3 | |
| from PyQt5.QtCore import QDateTime, Qt, QTimer | |
| from PyQt5.QtWidgets import (QApplication, QCheckBox, QComboBox, QDateTimeEdit, | |
| QDial, QDialog, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLineEdit, | |
| QProgressBar, QPushButton, QRadioButton, QScrollBar, QSizePolicy, | |
| QSlider, QSpinBox, QStyleFactory, QTableWidget, QTabWidget, QTextEdit, | |
| QVBoxLayout, QWidget) | |
| class WidgetGallery(QDialog): | |
| def __init__(self, parent=None): | |
| super(WidgetGallery, self).__init__(parent) | |
| self.originalPalette = QApplication.palette() | |
| styleComboBox = QComboBox() | |
| styleComboBox.addItems(QStyleFactory.keys()) | |
| styleLabel = QLabel("&Style:") | |
| styleLabel.setBuddy(styleComboBox) | |
| self.useStylePaletteCheckBox = QCheckBox("&Use style's standard palette") | |
| self.useStylePaletteCheckBox.setChecked(True) | |
| disableWidgetsCheckBox = QCheckBox("&Disable widgets") | |
| self.createTopLeftGroupBox() | |
| self.createTopRightGroupBox() | |
| self.createBottomLeftTabWidget() | |
| self.createBottomRightGroupBox() | |
| self.createProgressBar() | |
| styleComboBox.activated[str].connect(self.changeStyle) | |
| self.useStylePaletteCheckBox.toggled.connect(self.changePalette) | |
| disableWidgetsCheckBox.toggled.connect(self.topLeftGroupBox.setDisabled) | |
| disableWidgetsCheckBox.toggled.connect(self.topRightGroupBox.setDisabled) | |
| disableWidgetsCheckBox.toggled.connect(self.bottomLeftTabWidget.setDisabled) | |
| disableWidgetsCheckBox.toggled.connect(self.bottomRightGroupBox.setDisabled) | |
| topLayout = QHBoxLayout() | |
| topLayout.addWidget(styleLabel) | |
| topLayout.addWidget(styleComboBox) | |
| topLayout.addStretch(1) | |
| topLayout.addWidget(self.useStylePaletteCheckBox) | |
| topLayout.addWidget(disableWidgetsCheckBox) | |
| mainLayout = QGridLayout() | |
| mainLayout.addLayout(topLayout, 0, 0, 1, 2) | |
| mainLayout.addWidget(self.topLeftGroupBox, 1, 0) | |
| mainLayout.addWidget(self.topRightGroupBox, 1, 1) | |
| mainLayout.addWidget(self.bottomLeftTabWidget, 2, 0) | |
| mainLayout.addWidget(self.bottomRightGroupBox, 2, 1) | |
| mainLayout.addWidget(self.progressBar, 3, 0, 1, 2) | |
| mainLayout.setRowStretch(1, 1) | |
| mainLayout.setRowStretch(2, 1) | |
| mainLayout.setColumnStretch(0, 1) | |
| mainLayout.setColumnStretch(1, 1) | |
| self.setLayout(mainLayout) | |
| self.setWindowTitle("Styles") | |
| self.changeStyle('Windows') | |
| def changeStyle(self, styleName): | |
| QApplication.setStyle(QStyleFactory.create(styleName)) | |
| self.changePalette() | |
| def changePalette(self): | |
| if (self.useStylePaletteCheckBox.isChecked()): | |
| QApplication.setPalette(QApplication.style().standardPalette()) | |
| else: | |
| QApplication.setPalette(self.originalPalette) | |
| def advanceProgressBar(self): | |
| curVal = self.progressBar.value() | |
| maxVal = self.progressBar.maximum() | |
| self.progressBar.setValue(curVal + (maxVal - curVal) / 100) | |
| def createTopLeftGroupBox(self): | |
| self.topLeftGroupBox = QGroupBox("Group 1") | |
| radioButton1 = QRadioButton("Radio button 1") | |
| radioButton2 = QRadioButton("Radio button 2") | |
| radioButton3 = QRadioButton("Radio button 3") | |
| radioButton1.setChecked(True) | |
| checkBox = QCheckBox("Tri-state check box") | |
| checkBox.setTristate(True) | |
| checkBox.setCheckState(Qt.PartiallyChecked) | |
| layout = QVBoxLayout() | |
| layout.addWidget(radioButton1) | |
| layout.addWidget(radioButton2) | |
| layout.addWidget(radioButton3) | |
| layout.addWidget(checkBox) | |
| layout.addStretch(1) | |
| self.topLeftGroupBox.setLayout(layout) | |
| def createTopRightGroupBox(self): | |
| self.topRightGroupBox = QGroupBox("Group 2") | |
| defaultPushButton = QPushButton("Default Push Button") | |
| defaultPushButton.setDefault(True) | |
| togglePushButton = QPushButton("Toggle Push Button") | |
| togglePushButton.setCheckable(True) | |
| togglePushButton.setChecked(True) | |
| flatPushButton = QPushButton("Flat Push Button") | |
| flatPushButton.setFlat(True) | |
| layout = QVBoxLayout() | |
| layout.addWidget(defaultPushButton) | |
| layout.addWidget(togglePushButton) | |
| layout.addWidget(flatPushButton) | |
| layout.addStretch(1) | |
| self.topRightGroupBox.setLayout(layout) | |
| def createBottomLeftTabWidget(self): | |
| self.bottomLeftTabWidget = QTabWidget() | |
| self.bottomLeftTabWidget.setSizePolicy(QSizePolicy.Preferred, | |
| QSizePolicy.Ignored) | |
| tab1 = QWidget() | |
| tableWidget = QTableWidget(10, 10) | |
| tab1hbox = QHBoxLayout() | |
| tab1hbox.setContentsMargins(5, 5, 5, 5) | |
| tab1hbox.addWidget(tableWidget) | |
| tab1.setLayout(tab1hbox) | |
| tab2 = QWidget() | |
| textEdit = QTextEdit() | |
| textEdit.setPlainText("Twinkle, twinkle, little star,\n" | |
| "How I wonder what you are.\n" | |
| "Up above the world so high,\n" | |
| "Like a diamond in the sky.\n" | |
| "Twinkle, twinkle, little star,\n" | |
| "How I wonder what you are!\n") | |
| tab2hbox = QHBoxLayout() | |
| tab2hbox.setContentsMargins(5, 5, 5, 5) | |
| tab2hbox.addWidget(textEdit) | |
| tab2.setLayout(tab2hbox) | |
| self.bottomLeftTabWidget.addTab(tab1, "&Table") | |
| self.bottomLeftTabWidget.addTab(tab2, "Text &Edit") | |
| def createBottomRightGroupBox(self): | |
| self.bottomRightGroupBox = QGroupBox("Group 3") | |
| self.bottomRightGroupBox.setCheckable(True) | |
| self.bottomRightGroupBox.setChecked(True) | |
| lineEdit = QLineEdit('s3cRe7') | |
| lineEdit.setEchoMode(QLineEdit.Password) | |
| spinBox = QSpinBox(self.bottomRightGroupBox) | |
| spinBox.setValue(50) | |
| dateTimeEdit = QDateTimeEdit(self.bottomRightGroupBox) | |
| dateTimeEdit.setDateTime(QDateTime.currentDateTime()) | |
| slider = QSlider(Qt.Horizontal, self.bottomRightGroupBox) | |
| slider.setValue(40) | |
| scrollBar = QScrollBar(Qt.Horizontal, self.bottomRightGroupBox) | |
| scrollBar.setValue(60) | |
| dial = QDial(self.bottomRightGroupBox) | |
| dial.setValue(30) | |
| dial.setNotchesVisible(True) | |
| layout = QGridLayout() | |
| layout.addWidget(lineEdit, 0, 0, 1, 2) | |
| layout.addWidget(spinBox, 1, 0, 1, 2) | |
| layout.addWidget(dateTimeEdit, 2, 0, 1, 2) | |
| layout.addWidget(slider, 3, 0) | |
| layout.addWidget(scrollBar, 4, 0) | |
| layout.addWidget(dial, 3, 1, 2, 1) | |
| layout.setRowStretch(5, 1) | |
| self.bottomRightGroupBox.setLayout(layout) | |
| def createProgressBar(self): | |
| self.progressBar = QProgressBar() | |
| self.progressBar.setRange(0, 10000) | |
| self.progressBar.setValue(0) | |
| timer = QTimer(self) | |
| timer.timeout.connect(self.advanceProgressBar) | |
| timer.start(1000) | |
| if __name__ == '__main__': | |
| import sys | |
| app = QApplication(sys.argv) | |
| gallery = WidgetGallery() | |
| gallery.show() | |
| sys.exit(app.exec_()) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env python3 | |
| from PyQt5.QtCore import QDateTime, Qt, QTimer | |
| from PyQt5.QtWidgets import (QApplication, QCheckBox, QComboBox, QDateTimeEdit, | |
| QDial, QDialog, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLineEdit, | |
| QProgressBar, QPushButton, QRadioButton, QScrollBar, QSizePolicy, | |
| QSlider, QSpinBox, QStyleFactory, QTableWidget, QTabWidget, QTextEdit, | |
| QVBoxLayout, QWidget, QCalendarWidget) | |
| class WidgetGallery(QDialog): | |
| def __init__(self, parent=None): | |
| super(WidgetGallery, self).__init__(parent) | |
| self.createTopLeftGroupBox() | |
| self.createTopRightGroupBox() | |
| self.createBottomLeftTabWidget() | |
| self.createBottomRightGroupBox() | |
| mainLayout = QGridLayout() | |
| mainLayout.addWidget(self.topLeftGroupBox, 1, 0) | |
| mainLayout.addWidget(self.topRightGroupBox, 1, 1) | |
| mainLayout.addWidget(self.bottomLeftGroupBox, 2, 0) | |
| mainLayout.addWidget(self.bottomRightGroupBox, 2, 1) | |
| mainLayout.setRowStretch(1, 1) | |
| mainLayout.setRowStretch(2, 1) | |
| mainLayout.setColumnStretch(0, 1) | |
| mainLayout.setColumnStretch(1, 1) | |
| self.setLayout(mainLayout) | |
| self.setWindowTitle("Calendar Widget") | |
| def createTopLeftGroupBox(self): | |
| self.topLeftGroupBox = QGroupBox("Preview") | |
| layout = QVBoxLayout() | |
| layout.addWidget(QCalendarWidget()) | |
| self.topLeftGroupBox.setLayout(layout) | |
| def createTopRightGroupBox(self): | |
| self.topRightGroupBox = QGroupBox("General Options") | |
| locale = QComboBox() | |
| locale.addItems(['English/Germany', 'American', 'Asia']) | |
| weekstart = QComboBox() | |
| weekstart.addItems(['Sunday', 'Monday']) | |
| selecmode = QComboBox() | |
| selecmode.addItems(['Single selection']) | |
| # Grid + Navigation Bar | |
| grid = QCheckBox("Grid") | |
| grid.setChecked(True) | |
| navigationbar = QCheckBox("Navigation bar") | |
| navigationbar.setChecked(True) | |
| hboxoption = QHBoxLayout() | |
| hboxoption.addWidget(grid) | |
| hboxoption.addStretch() | |
| hboxoption.addWidget(navigationbar) | |
| hheader = QComboBox() | |
| hheader.addItems(['Short day names']) | |
| vheader = QComboBox() | |
| vheader.addItems(['ISO week numbers']) | |
| layout = QGridLayout() | |
| layout.addWidget(QLabel("Locale"), 0, 0) | |
| layout.addWidget(locale, 0, 1) | |
| layout.addWidget(QLabel("Week starts on"), 1, 0) | |
| layout.addWidget(weekstart, 1, 1) | |
| layout.addWidget(QLabel("Selection mode"), 2, 0) | |
| layout.addWidget(selecmode, 2, 1) | |
| layout.addLayout(hboxoption, 3, 0, 1, 2) | |
| layout.addWidget(QLabel("Horizontal header"), 4, 0) | |
| layout.addWidget(hheader, 4, 1) | |
| layout.addWidget(QLabel("Vertical header"), 5, 0) | |
| layout.addWidget(vheader, 5, 1) | |
| # layout.setColumnStretch(0, 0) | |
| layout.setColumnStretch(1, 1) # Only column 1 can stretch, column 0 fixed size | |
| self.topRightGroupBox.setLayout(layout) | |
| def createBottomLeftTabWidget(self): | |
| self.bottomLeftGroupBox = QGroupBox("Dates") | |
| layout = QVBoxLayout() | |
| self.bottomLeftGroupBox.setLayout(layout) | |
| def createBottomRightGroupBox(self): | |
| self.bottomRightGroupBox = QGroupBox("Text Format") | |
| layout = QVBoxLayout() | |
| self.bottomRightGroupBox.setLayout(layout) | |
| if __name__ == '__main__': | |
| import sys | |
| app = QApplication(sys.argv) | |
| gallery = WidgetGallery() | |
| gallery.show() | |
| sys.exit(app.exec_()) |
Author
ksvbka
commented
Dec 15, 2018


Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment