(Aug-19-2019, 03:28 PM)Denni Wrote: Okay but what does that UI Code look like is it just a massive mess like normal that does not use layouts or is is at least semi-structured and using layouts -- it would be very interesting to me to see the code that the designer put out assuming you properly used the various layout structuring you should to implement an actual pyqt solution. Note I am not being sarcastic or anything of the sort I am seriously interested and I am just outlining what I would need to see in order to change my mind at all about the Designer and I actually look forward to having my view changed.
Well, it is a massive semi-structured mess that use layouts ;)
But like I mentionned, who cares? Again, it is never meant to be read or edited; the project file is always contained as a .ui xml, and as the file is converted on install (firt to py, then to pyc), really the performance loss is negligible. The only code that matters resides in the scripts that handle this ui file.
player.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>620</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="tabLayout">
<property name="leftMargin">
<number>10</number>
</property>
<property name="topMargin">
<number>10</number>
</property>
<property name="rightMargin">
<number>10</number>
</property>
<property name="bottomMargin">
<number>10</number>
</property>
<item row="0" column="8">
<widget class="QToolButton" name="shuffleButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Shuffle</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset>
<normaloff>icons/shuffle_off.svg</normaloff>icons/shuffle_off.svg</iconset>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QToolButton" name="playButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Play / Pause</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset>
<normaloff>icons/play.svg</normaloff>icons/play.svg</iconset>
</property>
</widget>
</item>
<item row="0" column="5">
<widget class="QToolButton" name="previousButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Previous</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset>
<normaloff>icons/previous.svg</normaloff>icons/previous.svg</iconset>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QFrame" name="libraryFrame">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>300</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>300</width>
<height>16777215</height>
</size>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<layout class="QVBoxLayout" name="libraryLayout">
<property name="topMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QFrame" name="artFrame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout"/>
</widget>
</item>
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item row="1" column="1">
<widget class="QLineEdit" name="libraryFilterLine"/>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="libraryFilterClearButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Clear filter</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="0" column="0" colspan="3">
<widget class="QFrame" name="frame_3">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Filter by</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="filterArtistBox">
<property name="text">
<string>Artist</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="filterAlbumBox">
<property name="text">
<string>Album</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="filterTitleBox">
<property name="text">
<string>Title</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="frame_2">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>7</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>7</number>
</property>
<item row="0" column="0">
<widget class="QToolButton" name="preferencesButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Preferences</string>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="0" column="6">
<widget class="QToolButton" name="collapseButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Collapse all</string>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="0" column="7">
<widget class="QToolButton" name="expandButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Expand all</string>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="0" column="3">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="2">
<widget class="QToolButton" name="artButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Art viewer</string>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QToolButton" name="refreshButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Quick database refresh</string>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="6">
<widget class="QToolButton" name="nextButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Next</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset>
<normaloff>icons/next.svg</normaloff>icons/next.svg</iconset>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QToolButton" name="stopButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Stop</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset>
<normaloff>icons/stop.svg</normaloff>icons/stop.svg</iconset>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QSlider" name="playbackSlider">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QSlider" name="volumeSlider">
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition">
<enum>QSlider::NoTicks</enum>
</property>
<property name="tickInterval">
<number>50</number>
</property>
</widget>
</item>
<item row="0" column="7">
<widget class="QToolButton" name="repeatButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>25</height>
</rect>
</property>
</widget>
<action name="actionPreferences">
<property name="text">
<string>Preferences</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>
player.py
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'qoob/ui/player.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 620)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.tabLayout = QtWidgets.QGridLayout(self.centralwidget)
self.tabLayout.setContentsMargins(10, 10, 10, 10)
self.tabLayout.setObjectName("tabLayout")
self.shuffleButton = QtWidgets.QToolButton(self.centralwidget)
self.shuffleButton.setFocusPolicy(QtCore.Qt.NoFocus)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("icons/shuffle_off.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.shuffleButton.setIcon(icon)
self.shuffleButton.setObjectName("shuffleButton")
self.tabLayout.addWidget(self.shuffleButton, 0, 8, 1, 1)
self.playButton = QtWidgets.QToolButton(self.centralwidget)
self.playButton.setFocusPolicy(QtCore.Qt.NoFocus)
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap("icons/play.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.playButton.setIcon(icon1)
self.playButton.setObjectName("playButton")
self.tabLayout.addWidget(self.playButton, 0, 4, 1, 1)
self.previousButton = QtWidgets.QToolButton(self.centralwidget)
self.previousButton.setFocusPolicy(QtCore.Qt.NoFocus)
icon2 = QtGui.QIcon()
icon2.addPixmap(QtGui.QPixmap("icons/previous.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.previousButton.setIcon(icon2)
self.previousButton.setObjectName("previousButton")
self.tabLayout.addWidget(self.previousButton, 0, 5, 1, 1)
self.libraryFrame = QtWidgets.QFrame(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.libraryFrame.sizePolicy().hasHeightForWidth())
self.libraryFrame.setSizePolicy(sizePolicy)
self.libraryFrame.setMinimumSize(QtCore.QSize(300, 0))
self.libraryFrame.setMaximumSize(QtCore.QSize(300, 16777215))
self.libraryFrame.setLineWidth(0)
self.libraryFrame.setObjectName("libraryFrame")
self.libraryLayout = QtWidgets.QVBoxLayout(self.libraryFrame)
self.libraryLayout.setContentsMargins(-1, 0, -1, 0)
self.libraryLayout.setObjectName("libraryLayout")
self.artFrame = QtWidgets.QFrame(self.libraryFrame)
self.artFrame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.artFrame.setFrameShadow(QtWidgets.QFrame.Sunken)
self.artFrame.setObjectName("artFrame")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.artFrame)
self.horizontalLayout.setObjectName("horizontalLayout")
self.libraryLayout.addWidget(self.artFrame)
self.frame = QtWidgets.QFrame(self.libraryFrame)
self.frame.setFrameShape(QtWidgets.QFrame.NoFrame)
self.frame.setFrameShadow(QtWidgets.QFrame.Plain)
self.frame.setObjectName("frame")
self.gridLayout_2 = QtWidgets.QGridLayout(self.frame)
self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
self.gridLayout_2.setObjectName("gridLayout_2")
self.libraryFilterLine = QtWidgets.QLineEdit(self.frame)
self.libraryFilterLine.setObjectName("libraryFilterLine")
self.gridLayout_2.addWidget(self.libraryFilterLine, 1, 1, 1, 1)
self.libraryFilterClearButton = QtWidgets.QPushButton(self.frame)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.libraryFilterClearButton.sizePolicy().hasHeightForWidth())
self.libraryFilterClearButton.setSizePolicy(sizePolicy)
self.libraryFilterClearButton.setMaximumSize(QtCore.QSize(16, 16))
self.libraryFilterClearButton.setFocusPolicy(QtCore.Qt.NoFocus)
self.libraryFilterClearButton.setStyleSheet("")
self.libraryFilterClearButton.setText("")
self.libraryFilterClearButton.setObjectName("libraryFilterClearButton")
self.gridLayout_2.addWidget(self.libraryFilterClearButton, 1, 2, 1, 1)
self.frame_3 = QtWidgets.QFrame(self.frame)
self.frame_3.setFrameShape(QtWidgets.QFrame.NoFrame)
self.frame_3.setFrameShadow(QtWidgets.QFrame.Plain)
self.frame_3.setObjectName("frame_3")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.frame_3)
self.horizontalLayout_2.setContentsMargins(-1, -1, -1, 0)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label_2 = QtWidgets.QLabel(self.frame_3)
self.label_2.setObjectName("label_2")
self.horizontalLayout_2.addWidget(self.label_2)
self.filterArtistBox = QtWidgets.QCheckBox(self.frame_3)
self.filterArtistBox.setObjectName("filterArtistBox")
self.horizontalLayout_2.addWidget(self.filterArtistBox)
self.filterAlbumBox = QtWidgets.QCheckBox(self.frame_3)
self.filterAlbumBox.setObjectName("filterAlbumBox")
self.horizontalLayout_2.addWidget(self.filterAlbumBox)
self.filterTitleBox = QtWidgets.QCheckBox(self.frame_3)
self.filterTitleBox.setObjectName("filterTitleBox")
self.horizontalLayout_2.addWidget(self.filterTitleBox)
self.gridLayout_2.addWidget(self.frame_3, 0, 0, 1, 3)
self.libraryLayout.addWidget(self.frame)
self.frame_2 = QtWidgets.QFrame(self.libraryFrame)
self.frame_2.setFrameShape(QtWidgets.QFrame.NoFrame)
self.frame_2.setLineWidth(0)
self.frame_2.setObjectName("frame_2")
self.gridLayout = QtWidgets.QGridLayout(self.frame_2)
self.gridLayout.setContentsMargins(0, 7, 0, 7)
self.gridLayout.setObjectName("gridLayout")
self.preferencesButton = QtWidgets.QToolButton(self.frame_2)
self.preferencesButton.setFocusPolicy(QtCore.Qt.NoFocus)
self.preferencesButton.setObjectName("preferencesButton")
self.gridLayout.addWidget(self.preferencesButton, 0, 0, 1, 1)
self.collapseButton = QtWidgets.QToolButton(self.frame_2)
self.collapseButton.setFocusPolicy(QtCore.Qt.NoFocus)
self.collapseButton.setObjectName("collapseButton")
self.gridLayout.addWidget(self.collapseButton, 0, 6, 1, 1)
self.expandButton = QtWidgets.QToolButton(self.frame_2)
self.expandButton.setFocusPolicy(QtCore.Qt.NoFocus)
self.expandButton.setObjectName("expandButton")
self.gridLayout.addWidget(self.expandButton, 0, 7, 1, 1)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem, 0, 3, 1, 1)
self.artButton = QtWidgets.QToolButton(self.frame_2)
self.artButton.setFocusPolicy(QtCore.Qt.NoFocus)
self.artButton.setObjectName("artButton")
self.gridLayout.addWidget(self.artButton, 0, 2, 1, 1)
self.refreshButton = QtWidgets.QToolButton(self.frame_2)
self.refreshButton.setFocusPolicy(QtCore.Qt.NoFocus)
self.refreshButton.setObjectName("refreshButton")
self.gridLayout.addWidget(self.refreshButton, 0, 1, 1, 1)
self.libraryLayout.addWidget(self.frame_2)
self.tabLayout.addWidget(self.libraryFrame, 1, 0, 1, 1)
self.nextButton = QtWidgets.QToolButton(self.centralwidget)
self.nextButton.setFocusPolicy(QtCore.Qt.NoFocus)
icon3 = QtGui.QIcon()
icon3.addPixmap(QtGui.QPixmap("icons/next.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.nextButton.setIcon(icon3)
self.nextButton.setObjectName("nextButton")
self.tabLayout.addWidget(self.nextButton, 0, 6, 1, 1)
self.stopButton = QtWidgets.QToolButton(self.centralwidget)
self.stopButton.setFocusPolicy(QtCore.Qt.NoFocus)
icon4 = QtGui.QIcon()
icon4.addPixmap(QtGui.QPixmap("icons/stop.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.stopButton.setIcon(icon4)
self.stopButton.setObjectName("stopButton")
self.tabLayout.addWidget(self.stopButton, 0, 3, 1, 1)
self.playbackSlider = QtWidgets.QSlider(self.centralwidget)
self.playbackSlider.setFocusPolicy(QtCore.Qt.NoFocus)
self.playbackSlider.setOrientation(QtCore.Qt.Horizontal)
self.playbackSlider.setObjectName("playbackSlider")
self.tabLayout.addWidget(self.playbackSlider, 0, 0, 1, 2)
self.volumeSlider = QtWidgets.QSlider(self.centralwidget)
self.volumeSlider.setMaximumSize(QtCore.QSize(100, 16777215))
self.volumeSlider.setFocusPolicy(QtCore.Qt.NoFocus)
self.volumeSlider.setMaximum(100)
self.volumeSlider.setOrientation(QtCore.Qt.Horizontal)
self.volumeSlider.setTickPosition(QtWidgets.QSlider.NoTicks)
self.volumeSlider.setTickInterval(50)
self.volumeSlider.setObjectName("volumeSlider")
self.tabLayout.addWidget(self.volumeSlider, 0, 2, 1, 1)
self.repeatButton = QtWidgets.QToolButton(self.centralwidget)
self.repeatButton.setFocusPolicy(QtCore.Qt.NoFocus)
self.repeatButton.setText("")
self.repeatButton.setObjectName("repeatButton")
self.tabLayout.addWidget(self.repeatButton, 0, 7, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.menuBar = QtWidgets.QMenuBar(MainWindow)
self.menuBar.setGeometry(QtCore.QRect(0, 0, 800, 25))
self.menuBar.setObjectName("menuBar")
MainWindow.setMenuBar(self.menuBar)
self.actionPreferences = QtWidgets.QAction(MainWindow)
self.actionPreferences.setObjectName("actionPreferences")
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.shuffleButton.setToolTip(_translate("MainWindow", "Shuffle"))
self.shuffleButton.setText(_translate("MainWindow", "..."))
self.playButton.setToolTip(_translate("MainWindow", "Play / Pause"))
self.playButton.setText(_translate("MainWindow", "..."))
self.previousButton.setToolTip(_translate("MainWindow", "Previous"))
self.previousButton.setText(_translate("MainWindow", "..."))
self.libraryFilterClearButton.setToolTip(_translate("MainWindow", "Clear filter"))
self.label_2.setText(_translate("MainWindow", "Filter by"))
self.filterArtistBox.setText(_translate("MainWindow", "Artist"))
self.filterAlbumBox.setText(_translate("MainWindow", "Album"))
self.filterTitleBox.setText(_translate("MainWindow", "Title"))
self.preferencesButton.setToolTip(_translate("MainWindow", "Preferences"))
self.preferencesButton.setText(_translate("MainWindow", "..."))
self.collapseButton.setToolTip(_translate("MainWindow", "Collapse all"))
self.collapseButton.setText(_translate("MainWindow", "..."))
self.expandButton.setToolTip(_translate("MainWindow", "Expand all"))
self.expandButton.setText(_translate("MainWindow", "..."))
self.artButton.setToolTip(_translate("MainWindow", "Art viewer"))
self.artButton.setText(_translate("MainWindow", "..."))
self.refreshButton.setToolTip(_translate("MainWindow", "Quick database refresh"))
self.refreshButton.setText(_translate("MainWindow", "..."))
self.nextButton.setToolTip(_translate("MainWindow", "Next"))
self.nextButton.setText(_translate("MainWindow", "..."))
self.stopButton.setToolTip(_translate("MainWindow", "Stop"))
self.stopButton.setText(_translate("MainWindow", "..."))
self.actionPreferences.setText(_translate("MainWindow", "Preferences"))