AcrylicMaterialWidget Example
import sys
import AcrylicMaterialWidget_rc
from PySide2 import QtCore
from PySide2.QtCore import Qt
from PySide2.QtGui import QPainter, QPixmap
from PySide2.QtWidgets import QWidget, QApplication, QFrame, QLCDNumber, QCheckBox, QVBoxLayout, QGridLayout, QMessageBox
from DevMachines import QtitanBase
from DevMachines.QtitanBase import MaterialWidget
from DevMachines.QtitanNavigationDesignUI import NavigationMainWindow
class Window(NavigationMainWindow):
def __init__(self):
NavigationMainWindow.__init__(self)
self.setWindowTitle("FluentUI Acrylic Clock App")
self.setGeometry(100, 100, 1200, 600)
#self.setMaximumSize(QtCore.QSize(1600, 1000))
self.titleBar().setBlurBehindWindowEnabled(True)
self.titleBar().setSysButtonKind(QtitanBase.WindowTitleBar.BackButton)
self.titleBar().show()
self.connect(self.titleBar(), QtCore.SIGNAL("backRequested()"), self.showMessage)
self.materialWidget = MaterialWidget(self)
self.materialWidget.setBlendType(MaterialWidget.BackgroundBlend)
self.setCentralWidget(self.materialWidget)
self.background = QPixmap(":res/natural-image.jpg")
self.createContent()
self.timer = QtCore.QTimer(self)
self.connect(self.timer, QtCore.SIGNAL("timeout()"), self.showTime)
self.timer.start(1000)
self.showTime()
def createSettingsWidget(self):
widget = QWidget()
layout = QVBoxLayout(widget)
self.blendBox = QCheckBox(self)
self.blendBox.setText("In-App material brush blending")
self.connect(self.blendBox, QtCore.SIGNAL("toggled(bool)"), self, QtCore.SLOT("blendChecked(bool)"))
layout.addWidget(self.blendBox)
self.extendViewBox = QCheckBox(self)
self.extendViewBox.setText("Extend view into Title Bar (new)")
self.connect(self.extendViewBox, QtCore.SIGNAL("toggled(bool)"), self, QtCore.SLOT("extendViewChecked(bool)"))
self.extendViewBox.toggle()
layout.addWidget(self.extendViewBox)
return widget
def paintEvent(self, event):
painter = QPainter(self)
painter.setClipRegion(event.region())
painter.drawPixmap(0, 0, self.background)
def createContent(self):
self.clockWidget = QLCDNumber(self)
self.clockWidget.setFrameShape(QFrame.NoFrame)
self.clockWidget.setSegmentStyle(QLCDNumber.Filled)
layout = QGridLayout()
self.clockWidget.setFixedHeight(100)
layout.addWidget(self.clockWidget, 0, 0, Qt.AlignBottom)
layout.addWidget(self.createSettingsWidget(), 1, 0, Qt.AlignCenter)
self.centralWidget().setLayout(layout)
@QtCore.Slot()
def showTime(self):
time = QtCore.QTime.currentTime()
text = time.toString("hh:mm")
if time.second() % 2 == 0:
text = text[:2] + ' ' + text[3:]
self.clockWidget.display(text)
@QtCore.Slot(bool)
def blendChecked(self, checked):
if checked:
self.materialWidget.setBlendType(MaterialWidget.InAppBlend)
else:
self.materialWidget.setBlendType(MaterialWidget.BackgroundBlend)
@QtCore.Slot(bool)
def extendViewChecked(self, checked):
self.titleBar().setExtendViewIntoTitleBar(checked)
@QtCore.Slot()
def showMessage(self):
QMessageBox.information(self, "Message",
"WindowTitleBar back button is pressed",
QMessageBox.Ok)
if __name__ == "__main__":
app = QApplication(sys.argv)
w = Window()
w.show()
sys.exit(app.exec_())