-1

I am a newbie with PyQt and Qt designer. For testing I created a basic GUI using At Designer. I saved the layout as test.ui. Since I'm using Pycharm, I copied the test.ui file to a new pycharm project and in the terminal below I did :pyuic5 test.ui -o testgui.py After this a a testgui.py was present in the folder which looks something like this.

# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'test.ui'
#
# Created by: PyQt5 UI code generator 5.6
#
# 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, 601)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit.setGeometry(QtCore.QRect(445, 251, 221, 51))
        self.textEdit.setObjectName("textEdit")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(270, 200, 79, 24))
        self.pushButton.setObjectName("pushButton")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 19))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "PushButton"))

There is no way to call the class. When I tried

app = QtGui.QGuiApplication(sys.argv)
window = QtGui.QtWidget()
window.show()

I get the error :

Traceback (most recent call last):
File "/home/ravindra/PycharmProjects/PyQtGUI/testgui.py", line 41, in <module>
window = QtGui.QtWidget()
AttributeError: 'module' object has no attribute 'QtWidget'

Process finished with exit code 1

How do I solve this ?Kindly help

  • 1) change `QtGui.QGuiApplication(sys.argv)` to `QtWidgets.QGuiApplication(sys.argv)` 2) change `QtGui.QtWidget()` to `QtWidgets.QWidget()` – eyllanesc Jul 17 '19 at 13:20

1 Answers1

0

I cannot answer your question directly, but I may present alternative approach that works for me and maybe will work for you too.

First of all I use qtpy, which wraps PyQt, you may want to try it. I also don't translate .ui files to python, but instead I import .ui file directly:

from qtpy.QtWidgets import QMainWindow
from qtpy.uic import loadui

class Ui_MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        loadUi('test.ui', self)

And then somewhere:

mainWindow = Ui_MainWindow()
mainWindow.show()
app_exec()

I think it makes it easier for future ui changes.

Stanowczo
  • 753
  • 5
  • 21