Skip to content

Commit 8a86f8a

Browse files
Update Qt Designer sample editor to PyQt6
Migrate the qt-designer-python sample text editor from PyQt5 to PyQt6 to match the refreshed tutorial: - Regenerate main_window_ui.py with pyuic6 (PyQt6 6.11.0) - Update app.py imports to PyQt6 (QtWidgets and uic) - Update README install instructions to PyQt6 Verified: the app builds its GUI (setupUi) and loads find_replace.ui via uic.loadUi() under PyQt6 on Python 3.14. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 2bc0fdb commit 8a86f8a

3 files changed

Lines changed: 46 additions & 100 deletions

File tree

qt-designer-python/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ A **sample text editor** that shows how to use Qt Designer to create GUI applica
44

55
## How to Run this Application
66

7-
To run this application, you need to [install `PyQt5`](https://realpython.com/python-pyqt-gui-calculator/#installing-pyqt) on your Python environment. To do that, you can run the following commands in a terminal or command prompt:
7+
To run this application, you need to [install `PyQt6`](https://realpython.com/python-pyqt-gui-calculator/#installing-pyqt) on your Python environment. To do that, you can run the following commands in a terminal or command prompt:
88

99
```sh
1010
$ python3 -m venv ./venv
1111
$ source venv/bin/activate
12-
(venv) $ pip install PyQt5
12+
(venv) $ pip install PyQt6
1313
```
1414

15-
Once you have [PyQt](https://www.riverbankcomputing.com/static/Docs/PyQt5/) installed, you can run the application by executing the following command:
15+
Once you have [PyQt](https://www.riverbankcomputing.com/static/Docs/PyQt6/) installed, you can run the application by executing the following command:
1616

1717
```sh
1818
(venv) $ cd sample_editor/

qt-designer-python/sample_editor/app.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import sys
22

33
from main_window_ui import Ui_MainWindow
4-
from PyQt5.QtWidgets import QApplication, QDialog, QMainWindow, QMessageBox
5-
from PyQt5.uic import loadUi
4+
from PyQt6.QtWidgets import QApplication, QDialog, QMainWindow, QMessageBox
5+
from PyQt6.uic import loadUi
66

77

88
class Window(QMainWindow, Ui_MainWindow):
Lines changed: 41 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -1,122 +1,88 @@
1-
# -*- coding: utf-8 -*-
2-
31
# Form implementation generated from reading ui file 'ui/main_window.ui'
42
#
5-
# Created by: PyQt5 UI code generator 5.15.1
3+
# Created by: PyQt6 UI code generator 6.11.0
64
#
7-
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
5+
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
86
# run again. Do not edit this file unless you know what you are doing.
97

108

11-
from PyQt5 import QtCore, QtGui, QtWidgets
9+
from PyQt6 import QtCore, QtGui, QtWidgets
1210

1311

1412
class Ui_MainWindow(object):
1513
def setupUi(self, MainWindow):
1614
MainWindow.setObjectName("MainWindow")
1715
MainWindow.resize(413, 299)
18-
self.centralwidget = QtWidgets.QWidget(MainWindow)
16+
self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
1917
self.centralwidget.setObjectName("centralwidget")
2018
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
2119
self.verticalLayout.setContentsMargins(1, 1, 1, 1)
2220
self.verticalLayout.setObjectName("verticalLayout")
23-
self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
21+
self.textEdit = QtWidgets.QTextEdit(parent=self.centralwidget)
2422
self.textEdit.setObjectName("textEdit")
2523
self.verticalLayout.addWidget(self.textEdit)
2624
MainWindow.setCentralWidget(self.centralwidget)
27-
self.menubar = QtWidgets.QMenuBar(MainWindow)
25+
self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
2826
self.menubar.setGeometry(QtCore.QRect(0, 0, 413, 20))
2927
self.menubar.setObjectName("menubar")
30-
self.menu_File = QtWidgets.QMenu(self.menubar)
28+
self.menu_File = QtWidgets.QMenu(parent=self.menubar)
3129
self.menu_File.setObjectName("menu_File")
32-
self.menuOpen_Recent = QtWidgets.QMenu(self.menu_File)
30+
self.menuOpen_Recent = QtWidgets.QMenu(parent=self.menu_File)
3331
self.menuOpen_Recent.setObjectName("menuOpen_Recent")
34-
self.menu_Edit = QtWidgets.QMenu(self.menubar)
32+
self.menu_Edit = QtWidgets.QMenu(parent=self.menubar)
3533
self.menu_Edit.setObjectName("menu_Edit")
36-
self.menu_Help = QtWidgets.QMenu(self.menubar)
34+
self.menu_Help = QtWidgets.QMenu(parent=self.menubar)
3735
self.menu_Help.setObjectName("menu_Help")
3836
MainWindow.setMenuBar(self.menubar)
39-
self.statusbar = QtWidgets.QStatusBar(MainWindow)
37+
self.statusbar = QtWidgets.QStatusBar(parent=MainWindow)
4038
self.statusbar.setObjectName("statusbar")
4139
MainWindow.setStatusBar(self.statusbar)
42-
self.toolBar = QtWidgets.QToolBar(MainWindow)
40+
self.toolBar = QtWidgets.QToolBar(parent=MainWindow)
4341
self.toolBar.setObjectName("toolBar")
44-
MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
45-
self.action_New = QtWidgets.QAction(MainWindow)
42+
MainWindow.addToolBar(QtCore.Qt.ToolBarArea.TopToolBarArea, self.toolBar)
43+
self.action_New = QtGui.QAction(parent=MainWindow)
4644
icon = QtGui.QIcon()
47-
icon.addPixmap(
48-
QtGui.QPixmap("ui/resources/file-new.png"),
49-
QtGui.QIcon.Normal,
50-
QtGui.QIcon.Off,
51-
)
45+
icon.addPixmap(QtGui.QPixmap("ui/resources/file-new.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
5246
self.action_New.setIcon(icon)
5347
self.action_New.setObjectName("action_New")
54-
self.action_Open = QtWidgets.QAction(MainWindow)
48+
self.action_Open = QtGui.QAction(parent=MainWindow)
5549
icon1 = QtGui.QIcon()
56-
icon1.addPixmap(
57-
QtGui.QPixmap("ui/resources/file-open.png"),
58-
QtGui.QIcon.Normal,
59-
QtGui.QIcon.Off,
60-
)
50+
icon1.addPixmap(QtGui.QPixmap("ui/resources/file-open.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
6151
self.action_Open.setIcon(icon1)
6252
self.action_Open.setObjectName("action_Open")
63-
self.action_Save = QtWidgets.QAction(MainWindow)
53+
self.action_Save = QtGui.QAction(parent=MainWindow)
6454
icon2 = QtGui.QIcon()
65-
icon2.addPixmap(
66-
QtGui.QPixmap("ui/resources/file-save.png"),
67-
QtGui.QIcon.Normal,
68-
QtGui.QIcon.Off,
69-
)
55+
icon2.addPixmap(QtGui.QPixmap("ui/resources/file-save.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
7056
self.action_Save.setIcon(icon2)
7157
self.action_Save.setObjectName("action_Save")
72-
self.action_Exit = QtWidgets.QAction(MainWindow)
58+
self.action_Exit = QtGui.QAction(parent=MainWindow)
7359
icon3 = QtGui.QIcon()
74-
icon3.addPixmap(
75-
QtGui.QPixmap("ui/resources/file-exit.png"),
76-
QtGui.QIcon.Normal,
77-
QtGui.QIcon.Off,
78-
)
60+
icon3.addPixmap(QtGui.QPixmap("ui/resources/file-exit.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
7961
self.action_Exit.setIcon(icon3)
8062
self.action_Exit.setObjectName("action_Exit")
81-
self.action_Copy = QtWidgets.QAction(MainWindow)
63+
self.action_Copy = QtGui.QAction(parent=MainWindow)
8264
icon4 = QtGui.QIcon()
83-
icon4.addPixmap(
84-
QtGui.QPixmap("ui/resources/edit-copy.png"),
85-
QtGui.QIcon.Normal,
86-
QtGui.QIcon.Off,
87-
)
65+
icon4.addPixmap(QtGui.QPixmap("ui/resources/edit-copy.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
8866
self.action_Copy.setIcon(icon4)
8967
self.action_Copy.setObjectName("action_Copy")
90-
self.action_Paste = QtWidgets.QAction(MainWindow)
68+
self.action_Paste = QtGui.QAction(parent=MainWindow)
9169
icon5 = QtGui.QIcon()
92-
icon5.addPixmap(
93-
QtGui.QPixmap("ui/resources/edit-paste.png"),
94-
QtGui.QIcon.Normal,
95-
QtGui.QIcon.Off,
96-
)
70+
icon5.addPixmap(QtGui.QPixmap("ui/resources/edit-paste.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
9771
self.action_Paste.setIcon(icon5)
9872
self.action_Paste.setObjectName("action_Paste")
99-
self.action_Cut = QtWidgets.QAction(MainWindow)
73+
self.action_Cut = QtGui.QAction(parent=MainWindow)
10074
icon6 = QtGui.QIcon()
101-
icon6.addPixmap(
102-
QtGui.QPixmap("ui/resources/edit-cut.png"),
103-
QtGui.QIcon.Normal,
104-
QtGui.QIcon.Off,
105-
)
75+
icon6.addPixmap(QtGui.QPixmap("ui/resources/edit-cut.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
10676
self.action_Cut.setIcon(icon6)
10777
self.action_Cut.setObjectName("action_Cut")
108-
self.actionOpen_All = QtWidgets.QAction(MainWindow)
78+
self.actionOpen_All = QtGui.QAction(parent=MainWindow)
10979
self.actionOpen_All.setObjectName("actionOpen_All")
110-
self.action_About = QtWidgets.QAction(MainWindow)
80+
self.action_About = QtGui.QAction(parent=MainWindow)
11181
icon7 = QtGui.QIcon()
112-
icon7.addPixmap(
113-
QtGui.QPixmap("ui/resources/help-content.png"),
114-
QtGui.QIcon.Normal,
115-
QtGui.QIcon.Off,
116-
)
82+
icon7.addPixmap(QtGui.QPixmap("ui/resources/help-content.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
11783
self.action_About.setIcon(icon7)
11884
self.action_About.setObjectName("action_About")
119-
self.action_Find_Replace = QtWidgets.QAction(MainWindow)
85+
self.action_Find_Replace = QtGui.QAction(parent=MainWindow)
12086
self.action_Find_Replace.setObjectName("action_Find_Replace")
12187
self.menuOpen_Recent.addAction(self.actionOpen_All)
12288
self.menu_File.addAction(self.action_New)
@@ -160,47 +126,27 @@ def retranslateUi(self, MainWindow):
160126
self.menu_Help.setTitle(_translate("MainWindow", "&Help"))
161127
self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar"))
162128
self.action_New.setText(_translate("MainWindow", "&New..."))
163-
self.action_New.setToolTip(
164-
_translate("MainWindow", "Create a New Document")
165-
)
129+
self.action_New.setToolTip(_translate("MainWindow", "Create a New Document"))
166130
self.action_New.setShortcut(_translate("MainWindow", "Ctrl+N"))
167131
self.action_Open.setText(_translate("MainWindow", "&Open..."))
168-
self.action_Open.setToolTip(
169-
_translate("MainWindow", "Open a Document")
170-
)
132+
self.action_Open.setToolTip(_translate("MainWindow", "Open a Document"))
171133
self.action_Open.setShortcut(_translate("MainWindow", "Ctrl+O"))
172134
self.action_Save.setText(_translate("MainWindow", "&Save"))
173-
self.action_Save.setToolTip(
174-
_translate("MainWindow", "Save the Current Document")
175-
)
135+
self.action_Save.setToolTip(_translate("MainWindow", "Save the Current Document"))
176136
self.action_Save.setShortcut(_translate("MainWindow", "Ctrl+S"))
177137
self.action_Exit.setText(_translate("MainWindow", "&Exit"))
178138
self.action_Copy.setText(_translate("MainWindow", "&Copy"))
179-
self.action_Copy.setToolTip(
180-
_translate("MainWindow", "Copy Slected Text")
181-
)
139+
self.action_Copy.setToolTip(_translate("MainWindow", "Copy Slected Text"))
182140
self.action_Copy.setShortcut(_translate("MainWindow", "Ctrl+C"))
183141
self.action_Paste.setText(_translate("MainWindow", "&Paste"))
184-
self.action_Paste.setToolTip(
185-
_translate("MainWindow", "Paste Copied Text")
186-
)
142+
self.action_Paste.setToolTip(_translate("MainWindow", "Paste Copied Text"))
187143
self.action_Paste.setShortcut(_translate("MainWindow", "Ctrl+V"))
188144
self.action_Cut.setText(_translate("MainWindow", "C&ut"))
189-
self.action_Cut.setToolTip(
190-
_translate("MainWindow", "Cut Selected Text")
191-
)
145+
self.action_Cut.setToolTip(_translate("MainWindow", "Cut Selected Text"))
192146
self.action_Cut.setShortcut(_translate("MainWindow", "Ctrl+X"))
193147
self.actionOpen_All.setText(_translate("MainWindow", "Open All"))
194-
self.actionOpen_All.setToolTip(
195-
_translate("MainWindow", "Open All Recent Documents")
196-
)
148+
self.actionOpen_All.setToolTip(_translate("MainWindow", "Open All Recent Documents"))
197149
self.action_About.setText(_translate("MainWindow", "&About..."))
198-
self.action_Find_Replace.setText(
199-
_translate("MainWindow", "&Find and Replace...")
200-
)
201-
self.action_Find_Replace.setToolTip(
202-
_translate("MainWindow", "Launch Find and Replace Dialog")
203-
)
204-
self.action_Find_Replace.setShortcut(
205-
_translate("MainWindow", "Ctrl+F")
206-
)
150+
self.action_Find_Replace.setText(_translate("MainWindow", "&Find and Replace..."))
151+
self.action_Find_Replace.setToolTip(_translate("MainWindow", "Launch Find and Replace Dialog"))
152+
self.action_Find_Replace.setShortcut(_translate("MainWindow", "Ctrl+F"))

0 commit comments

Comments
 (0)