JCMcRae
JCMcRae

Reputation: 257

Qt Creator/Designer Program Doesn't Show?

I have created a simple test program in Qt Designer that allows you to select a folder and display its contents on a window. It looks like this:

Simple Test Program

I have successfully converted the .ui file to .py without fail. Next, here is my code to run the program, aptly named main.py:

from PyQt4 import QtGui
import sys
import design
import os

class ExampleApp(QtGui.QMainWindow, design.Ui_MainWindow):
def _init_(self):
    super(self._class_, self)._init_()
    self.setupUI(self)
    self.btnBrowse.clicked.connect(self.browse_folder)

def browse_folder(self):
    self.listWidget.clear()
    directory = QtGui.QFileDialog.getExistingDirectory(self,"Pick a Folder")

    if directory:
        for file_name in os.listdir(directory):
            self.listWidget.addItem(file_name)

def main():
    app = QtGui.QApplication(sys.argv)
    form = ExampleApp()
    form.show()
    app.exec_()

if __name__ == '__main__':
    main()

In my command prompt, I run the following code:

python main.py

It proceeds to load for a second or two, and then I get this: Python and Program

Is there something that I am doing wrong? Why isn't my program showing up the way it should be? Any help is appreciated!

Upvotes: 0

Views: 472

Answers (1)

101
101

Reputation: 8999

These lines are wrong:

def _init_(self):
    super(self._class_, self)._init_()

Instead you want something like:

def __init__(self, parent=None):
    super(ExampleApp, self).__init__(parent)

Note the double underscores, the different super argument, and passing parent to the super class. I can't test this right now, but it should be much closer to working.

By naming your __init__ method incorrectly it never would've been called. That explains why you get a window but not the one you designed.

Upvotes: 1

Related Questions