This page contains some python examples.
Sample PySide Application
#!/usr/bin/env python3
from PySide2 import QtCore, QtGui, QtWidgets
import PySide2
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
# Counter for toplevel records
self.recCounter = 0
# Counter for record items
self.itemCounter = 0
self.frame = QtWidgets.QFrame()
self.frame.setBaseSize(100, 80)
self.foo = QtWidgets.QComboBox(self.frame)
self.completer = QtWidgets.QCompleter(["foo", "bar"])
self.completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
self.foo.setEditable(True)
self.foo.setCompleter(self.completer)
self.foo.addItem("foo")
self.foo.addItem("bar")
self.foo.currentIndexChanged.connect(self.fooChanged)
self.frame.show()
self.frame.resize(QtCore.QSize(200, 100))
self.splitter = QtWidgets.QSplitter(QtCore.Qt.Horizontal)
self.vLayout = QtWidgets.QVBoxLayout()
self.vLayout.setSpacing(0)
self.recList = QtWidgets.QListWidget()
self.recList.itemClicked.connect(self.listClick)
self.recTable = QtWidgets.QTableWidget()
self.recTable.setLineWidth(2)
self.recTable.setColumnCount(4)
columnLabels = ["", "", "Name", "Value"]
self.recTable.setHorizontalHeaderLabels(columnLabels)
self.recTable.setColumnWidth(0, 30)
self.recTable.setColumnWidth(1, 30)
self.recTable.setColumnWidth(2, 200)
self.recTable.setColumnWidth(3, 600)
self.tableToolbar = QtWidgets.QToolBar("Item Actions")
self.vLayout.addWidget(self.tableToolbar)
self.vLayout.addWidget(self.recTable)
self.splitter.addWidget(self.recList)
self.vFrame = QtWidgets.QFrame()
self.vFrame.setLayout(self.vLayout)
self.splitter.addWidget(self.vFrame)
self.setCentralWidget(self.splitter)
self.splitter.setSizes([200, 800])
self.createActions()
self.createMenus()
self.createToolBars()
self.createStatusBar()
self.tableToolbar.addAction(self.addTableItemAct)
self.tableToolbar.addAction(self.delTableItemAct)
self.readSettings()
self.setUnifiedTitleAndToolBarOnMac(True)
self.setWindowTitle("Test Application")
def fooChanged(self):
print("Value is: %s" % self.foo.itemText(self.foo.currentIndex()))
def listClick(self):
print("List clicked...")
def close(self):
super(MainWindow, self).close()
def closeEvent(self, event):
print("Exiting...")
self.writeSettings()
self.frame.close()
event.accept()
def save(self):
print("Saving...")
def new(self):
self.recCounter += 1
item = QtWidgets.QListWidgetItem("New Item " + str(self.recCounter))
item.setFlags(item.flags() | QtCore.Qt.ItemIsEditable
| QtCore.Qt.ItemIsDragEnabled)
item.setToolTip("This is a tool tip for an item")
item.setStatusTip("This is a status tip for an item")
self.recList.addItem(item)
#self.recList.editItem(item)
self.newItemRow()
return True
def newItemRow(self):
self.itemCounter += 1
rows = self.recTable.rowCount() + 1
self.recTable.setRowCount(rows)
delItem = self.recTable.setCellWidget(rows-1, 0, QtWidgets.QPushButton("X"))
# self.recTable.cellWidget(rows-1, 0).setVisible(False)
addItem = self.recTable.setCellWidget(rows-1, 1, QtWidgets.QPushButton("+"))
# self.recTable.cellWidget(rows-1, 1).setVisible(False)
nameItem = QtWidgets.QTableWidgetItem("Name " + str(self.itemCounter))
self.recTable.setItem(rows-1, 2, nameItem)
valueItem = QtWidgets.QTableWidgetItem("Value " + str(self.itemCounter))
self.recTable.setItem(rows-1, 3, valueItem)
def addTableItem(self):
print("Called addTableItem()")
def delTableItem(self):
print("Called delTableItem()")
def about(self):
QtWidgets.QMessageBox.about(self, "About Application", "Test Application")
def createActions(self):
self.saveAct = QtWidgets.QAction(QtGui.QIcon('images/save.png'),
"&Save", self, shortcut=QtGui.QKeySequence.Save,
statusTip="Save the document to disk", triggered=self.save)
self.newAct = QtWidgets.QAction(QtGui.QIcon('images/new.png'),
"&New", self, shortcut=QtGui.QKeySequence.New,
statusTip="Create new entry", triggered=self.new)
self.exitAct = QtWidgets.QAction("E&xit", self, shortcut=QtGui.QKeySequence.Quit,
statusTip="Exit the application", triggered=self.close)
self.aboutAct = QtWidgets.QAction("&About", self,
statusTip="About Application",
triggered=self.about)
self.addTableItemAct = QtWidgets.QAction("+", self, statusTip="Add new item to the record",
triggered=self.addTableItem)
self.delTableItemAct = QtWidgets.QAction("X", self, statusTip="Delete selected item from the record",
triggered=self.delTableItem)
def createMenus(self):
self.fileMenu = self.menuBar().addMenu("&File")
self.fileMenu.addAction(self.saveAct)
self.fileMenu.addAction(self.newAct)
self.fileMenu.addSeparator()
self.fileMenu.addAction(self.exitAct)
self.menuBar().addSeparator()
self.helpMenu = self.menuBar().addMenu("&Help")
self.helpMenu.addAction(self.aboutAct)
def createToolBars(self):
self.fileToolBar = self.addToolBar("File")
self.fileToolBar.addAction(self.saveAct)
self.fileToolBar.addAction(self.newAct)
def createStatusBar(self):
self.statusBar().showMessage("Ready")
def readSettings(self):
settings = QtCore.QSettings("Test", "TestApp")
pos = settings.value("pos", QtCore.QPoint(200, 200))
size = settings.value("size", QtCore.QSize(400, 400))
self.resize(size)
self.move(pos)
def writeSettings(self):
settings = QtCore.QSettings("Test", "TestApp")
settings.setValue("pos", self.pos())
settings.setValue("size", self.size())
def saveFile(self, fileName):
self.statusBar().showMessage("File saved", 2000)
return True
print("PySide Version: " + PySide2.__version__)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
mainWin = MainWindow()
mainWin.show()
sys.exit(app.exec_())
Code language: Python (python)