Linking Python to multiple qt forms

Z

Zabin

Hey!

I am new to PyQt programming and am trying to activate a secondary qt
form from a primary form. I am unsure as to how this will work as i am
using pyuic4 to convert .ui file to .py and then importing it by:

from SimLCM_GUI import Ui_main

I am unsure as to how the self.ui....commands will function if there
are two such .ui files.

Thanks in advance for any advice!

Cheers
Zabin
 
T

trzewiczek

Hey!

I am new to PyQt programming and am trying to activate a secondary qt
form from a primary form. I am unsure as to how this will work as i am
using pyuic4 to convert .ui file to .py and then importing it by:

from SimLCM_GUI import Ui_main

I am unsure as to how the self.ui....commands will function if there
are two such .ui files.

Thanks in advance for any advice!

Cheers
Zabin
The easiest way for me was to create three classes - two for each form
created in QDesigner and one that holds them as objects. If you want to
switch from one to another you can emit a SIGNAL to the form's SLOT
setVisible(bool) to hide it and another to the other to show it. My
code looks sth like that:

#
# imports

from options_ui import Ui_options
from main_ui import Ui_main


#
# class for the first ui form

class OptionsPanel(QtGui.QWidget):

def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)

self.ui = Ui_options()
self.ui.setupUi(self)


#
# class for the second ui form

class MainPanel(QtGui.QWidget):

def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)

self.ui = Ui_main()
self.ui.setupUi(self)


#
# holder class for the panels

class MyApp(QtGui.QWidget):

def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)

self.setWindowTitle("My App")

self.options_panel = OptionsPanel(self)
self.main_panel = MainPanel(self)

QtCore.QObject.connect(self, QtCore.SIGNAL("main(bool)"),
self.main_panel, QtCore.SLOT("setVisible(bool)"))
QtCore.QObject.connect(self, QtCore.SIGNAL("options(bool)"),
self.options_panel, QtCore.SLOT("setVisible(bool)"))

self.showMain()


#
# functions that toggle the views

def showOptions(self):
self.emit(QtCore.SIGNAL("main(bool)"), False)
self.emit(QtCore.SIGNAL("options(bool)"), True)

def showMain(self):
self.emit(QtCore.SIGNAL("options(bool)"), False)
self.emit(QtCore.SIGNAL("main(bool)"), True)


As I said - that works for me. If there's a better way, being a new to
PyQt4 I'm looking for it as well!

Best from Poland,
trzewiczek
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,772
Messages
2,569,593
Members
45,111
Latest member
VetaMcRae
Top