Skip to content

Commit fe8c51e

Browse files
Mehmet Aksoymcagriaksoy
authored andcommitted
[WIP] Updates project to use PySide6 and QtDesigner
Migrates the project from PyQt6 to PySide6. Updates the UI loading mechanism to use QUiLoader when in debug mode. Adds a resources file for storing images used in the UI. Fixes issue where ui file path was not correctly defined. Changes start and end button styles.
1 parent c6e1d38 commit fe8c51e

File tree

7 files changed

+463
-332
lines changed

7 files changed

+463
-332
lines changed

Serial-Communication-GUI-Program.pyproject

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"src/ui_main.py",
55
"ui/icon.ico",
66
"ui/main_window.ui",
7+
"ui/resources.qrc",
78
"ui/ui_main_window.py"
89
]
910
}

Serial-Communication-GUI-Program.pyproject.user

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!DOCTYPE QtCreatorProject>
3-
<!-- Written by QtCreator 14.0.2, 2024-12-04T10:44:32. -->
3+
<!-- Written by QtCreator 16.0.0, 2025-04-15T11:04:03. -->
44
<qtcreator>
55
<data>
66
<variable>EnvironmentId</variable>
@@ -13,8 +13,8 @@
1313
<data>
1414
<variable>ProjectExplorer.Project.EditorSettings</variable>
1515
<valuemap type="QVariantMap">
16+
<value type="bool" key="EditorConfiguration.AutoDetect">true</value>
1617
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
17-
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
1818
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
1919
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
2020
<value type="QString" key="language">Cpp</value>
@@ -33,6 +33,7 @@
3333
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
3434
<value type="int" key="EditorConfiguration.IndentSize">4</value>
3535
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
36+
<value type="int" key="EditorConfiguration.LineEndingBehavior">0</value>
3637
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
3738
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
3839
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
@@ -151,7 +152,7 @@
151152
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
152153
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
153154
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">mainwindow.py</value>
154-
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">PythonEditor.RunConfiguration.C:/Projects/Qt_playground/Serial-Communication-GUI-Program/mainwindow.py</value>
155+
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">PythonEditor.RunConfiguration.</value>
155156
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/Projects/Qt_playground/Serial-Communication-GUI-Program/mainwindow.py</value>
156157
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">true</value>
157158
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
@@ -168,7 +169,7 @@
168169
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
169170
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
170171
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">src\ui_config.py</value>
171-
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">PythonEditor.RunConfiguration.C:/Projects/Qt_playground/Serial-Communication-GUI-Program/src/ui_config.py</value>
172+
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">PythonEditor.RunConfiguration.</value>
172173
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/Projects/Qt_playground/Serial-Communication-GUI-Program/src/ui_config.py</value>
173174
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">true</value>
174175
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
@@ -185,13 +186,11 @@
185186
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
186187
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
187188
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">src\ui_main.py</value>
188-
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">PythonEditor.RunConfiguration.C:/Projects/Qt_playground/Serial-Communication-GUI-Program/src/ui_main.py</value>
189+
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">PythonEditor.RunConfiguration.</value>
189190
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/Projects/Qt_playground/Serial-Communication-GUI-Program/src/ui_main.py</value>
190191
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">true</value>
191-
<value type="QString" key="PythonEditor.RunConfiguation.Script">C:\Projects\Qt_playground\Serial-Communication-GUI-Program\src\ui_main.py</value>
192192
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
193193
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
194-
<value type="QString" key="RunConfiguration.WorkingDirectory.default">C:/Projects/Qt_playground/Serial-Communication-GUI-Program/src</value>
195194
</valuemap>
196195
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.3">
197196
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
@@ -204,15 +203,32 @@
204203
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
205204
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
206205
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">main.py</value>
207-
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">PythonEditor.RunConfiguration.C:/Projects/Qt_playground/Serial-Communication-GUI-Program/main.py</value>
206+
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">PythonEditor.RunConfiguration.</value>
208207
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/Projects/Qt_playground/Serial-Communication-GUI-Program/main.py</value>
209208
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">true</value>
210-
<value type="QString" key="PythonEditor.RunConfiguation.Script">C:\Projects\Qt_playground\Serial-Communication-GUI-Program\main.py</value>
211209
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
212210
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
213-
<value type="QString" key="RunConfiguration.WorkingDirectory.default">C:/Projects/Qt_playground/Serial-Communication-GUI-Program</value>
214211
</valuemap>
215-
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">4</value>
212+
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.4">
213+
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
214+
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
215+
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
216+
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
217+
<valuelist type="QVariantList" key="CustomOutputParsers"/>
218+
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
219+
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
220+
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
221+
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
222+
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">main.py2</value>
223+
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">PythonEditor.RunConfiguration.</value>
224+
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/Users/aksoym/Desktop/Serial-Communication-GUI-Program/main.py</value>
225+
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">true</value>
226+
<value type="QString" key="PythonEditor.RunConfiguation.Script">C:\Users\aksoym\Desktop\Serial-Communication-GUI-Program\main.py</value>
227+
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
228+
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
229+
<value type="QString" key="RunConfiguration.WorkingDirectory.default">C:/Users/aksoym/Desktop/Serial-Communication-GUI-Program</value>
230+
</valuemap>
231+
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">5</value>
216232
</valuemap>
217233
</data>
218234
<data>

src/ui_main.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
from glob import glob
1717

1818
# Runtime Type Checking
19-
PROGRAM_TYPE_DEBUG = False
20-
PROGRAM_TYPE_RELEASE = True
19+
PROGRAM_TYPE_DEBUG = True
20+
PROGRAM_TYPE_RELEASE = False
2121

2222
try:
2323
import serial.tools.list_ports
@@ -27,11 +27,11 @@
2727
#system("python -m pip install pyserial")
2828

2929
try:
30-
from PyQt6.QtCore import QObject, QThread, pyqtSignal
31-
from PyQt6.QtWidgets import QApplication, QMainWindow, QMessageBox, QInputDialog, QFileDialog
30+
from PySide6.QtCore import QObject, QThread, Signal, QFile
31+
from PySide6.QtWidgets import QApplication, QMainWindow, QMessageBox, QInputDialog, QFileDialog
3232

3333
if (PROGRAM_TYPE_DEBUG):
34-
from PyQt6.uic import loadUi
34+
from PySide6.QtUiTools import QUiLoader
3535
else: # PROGRAM_TYPE_RELEASE
3636
from ui.ui_main_window import Ui_main_window
3737
except ImportError as e:
@@ -75,8 +75,8 @@ def get_serial_port():
7575
# MULTI-THREADING
7676
class Worker(QObject):
7777
""" Worker Thread """
78-
finished = pyqtSignal()
79-
serial_data = pyqtSignal(str)
78+
finished = Signal()
79+
serial_data = Signal(str)
8080

8181
def __init__(self):
8282
super(Worker, self).__init__()
@@ -103,12 +103,16 @@ def __init__(self):
103103
""" Initialize Main Window """
104104
super(MainWindow, self).__init__()
105105
if PROGRAM_TYPE_DEBUG:
106+
106107
file_path = path.join("ui/main_window.ui")
107108
if not path.exists(file_path):
108109
print("UI File Not Found!")
109110
exit(1)
110-
loadUi(file_path, self.ui) # Load the .ui file
111-
self.ui.show() # Show the GUI
111+
ui_file = QFile(file_path)
112+
ui_file.open(QFile.ReadOnly)
113+
loader = QUiLoader()
114+
self.ui = loader.load(ui_file)
115+
self.ui.show()
112116
else: # PROGRAM_TYPE_RELEASE
113117
print("UI File Found!")
114118
self.ui= Ui_main_window()

ui/main_window.ui

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@
270270
<bool>false</bool>
271271
</property>
272272
<property name="styleSheet">
273-
<string notr="true">background-color:qlineargradient(spread:pad, x1:0.409, y1:0, x2:0.430448, y2:1, stop:0 rgba(255, 0, 0, 255), stop:1 rgba(255, 255, 255, 255))</string>
273+
<string notr="true"/>
274274
</property>
275275
<property name="locale">
276276
<locale language="English" country="UnitedStates"/>
@@ -292,7 +292,7 @@
292292
<bool>false</bool>
293293
</property>
294294
<property name="styleSheet">
295-
<string notr="true">background-color:qlineargradient(spread:pad, x1:0.556, y1:0, x2:0.550444, y2:1, stop:0 rgba(0, 146, 0, 255), stop:1 rgba(255, 255, 255, 255))</string>
295+
<string notr="true"/>
296296
</property>
297297
<property name="text">
298298
<string>START</string>

ui/resource/play.svg

Lines changed: 1 addition & 0 deletions
Loading

ui/resources.qrc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<RCC>
2+
<qresource prefix="/">
3+
<file>resource/play.svg</file>
4+
</qresource>
5+
</RCC>

0 commit comments

Comments
 (0)