2015-02-17 3 views
-1

меня 2 ГПИ, что я создал, используя Qt-дизайнер, и я превратил его в питон - anmUi.py и anmInfoUI.pyВызовите другой GUI в GUI

В то время как я могу импортировать как и открыть anmUi выполнив следующие действия:

import sys 
sys.path.insert(0, '/user_data/test/anm/versions') 
import anmTool_v01a 
reload(anmTool_v01a) 
win = anmTool_v01a.anmUi() 
win.show() 

Однако у меня возникли проблемы с открытием второго графического интерфейса - anmInfoUI, который должен был быть инициирована кнопкой в ​​первом графическом интерфейсе.

Я пробовал писать в том же формате, что и для первого gui, но когда я попытался запустить его с .exec, у меня была ошибка, такая как # AttributeError: 'module' object has no attribute 'exec_'.

class anmUi(QtGui.QWidget): 
    def __init__(self): 
     QtGui.QWidget.__init__(self, parent = None, modal = False) 
     self.ui = anmUi.Ui_Migration() 
     self.ui.setupUi(self) 
     self.createConnections() 


    def createConnections(self): 
     self.connect(self.ui.pushButton_editSelected, QtCore.SIGNAL('clicked()'), self.editSelected) 


    def editSelected(self): 
     selected_item = self.ui.treeWidget_migrateAnmg.selectedItems() 
     if selected_item: 
      anmInfoUI.exec_() 


class anmInfoUI(QtGui.QDialog): 

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

     self.ui = anmInfoUI.Ui_EditInfo() 
     self.ui.setupUi(self) 

Как его запустить?

+0

Пожалуйста, предоставьте код, в котором вы вызываете 'exec_', и он не работает (весь соответствующий код). Необходимо знать, что вы делаете, прежде чем кто-нибудь может вам помочь –

+0

@three_pineapples Я отредактировал код в своем сообщении, как показано выше. – yan

ответ

0

exec_() - это то, что вы вызываете в приложении Qt. В вашем случае приложение уже запущено (иначе вы не увидите никакого окна), и вместо этого вы хотите создать экземпляр нового виджета/окна и вызвать его метод show().

+0

Если вы включите больше своего кода, минимальное количество для воспроизведения проблемы, мы можем дать вам более точный ответ. – mdurant

+0

с помощью 'show()' не работает для меня ... Это код python для моего первого пользовательского интерфейса - http://pastebin.com/raw.php?i=88AuDBgc, пока это для моего второго интерфейса - http: //pastebin.com/raw.php?i=PJ0ZKtrA. Когда я пытался использовать 'show()', хотя я не получаю никаких ошибок, но второй пользовательский интерфейс не отображается – yan

+0

anmgTool не запускается из кода, который вы дали (объект 'QDialog 'не имеет атрибута' slot_cancel'') – mdurant

0

Этот код успешно открывает новое окно.

class anmUi(QtGui.QWidget): 
    def __init__(self): 
     QtGui.QWidget.__init__(self, parent = None, modal = False) 
     self.ui = Ui_Migration() 
     self.ui.setupUi(self) 
     self.createConnections() 


    def createConnections(self): 
     self.connect(self.ui.pushButton_editSelected, QtCore.SIGNAL('clicked()'), self.editSelected) 


    def editSelected(self): 
     selected_item = self.ui.treeWidget_migrateAnmg.selectedItems() 
     if True: 
      self.child = anmInfoUI() 
      self.child.show() 

    def slot_cancel(self, *args): 
     pass 


class anmInfoUI(QtGui.QDialog): 

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

     self.ui = Ui_EditAsset() 
     self.ui.setupUi(self) 

Обратите внимание на использование True (я не хотел заполнять ваш блок выбора). Вы можете контролировать, является ли новое окно модальным или не использует его флаги.

Смежные вопросы