2015-12-15 94 views
-1

我想在菜單欄單擊(不是菜單項)後打開一個窗口。什麼是錯誤的下面的代碼:MenuBar單擊事件

self.menuHelp.triggered.connect(lambda : HelpWindow().exec_()) 
+1

不清楚你想在這裏問什麼......如果你得到錯誤,請張貼消息...否則,解釋更多。 –

+0

是'QApplication'類型的'HelpWindow'嗎?如果是這樣,你應該使它成爲一個'QMainWindow'和'.show()'它。 – 101

+0

HelpWindow是一個派生自QDialogBox的類。 –

回答

-1

如果我理解正確,那麼你想在菜單欄點擊打開新窗口,trigger event與click事件不同,所以你需要實現自己的菜單欄,我有一個工作例如但不知道這是什麼點:) 和一些代碼,我從上面的答案,對不起懶惰。

import sys 
# This is bad, but was stealing code from above answer 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 

class HelpWindow(QtGui.QDialog): 
    def __init__(self): 
     super(HelpWindow, self).__init__() 
     self.setObjectName("self") 
     self.resize(500, 350) 
     layout = QtGui.QVBoxLayout() 
     textLbl = QtGui.QLabel("REally ?") 
     layout.addWidget(textLbl) 
     self.setLayout(layout) 

    def exec_(self): 
     super(HelpWindow, self).exec_() 
     return "Blaaa" 

class CustomMB(QMenuBar): 
    mbClick = pyqtSignal(str) 
    def __init__(self, parent=None): 
     super(CustomMB, self).__init__() 

    @pyqtSlot() 
    def mouseReleaseEvent(self, event): 
     self.mbClick.emit('clicked') 

class MyWindow(QMainWindow): 
    def __init__(self): 
     super(MyWindow, self).__init__() 
     self.main_menu = CustomMB() 
     self.main_menu.mbClick.connect(lambda : HelpWindow().exec_()) 
     self.setMenuBar(self.main_menu) 
     self.create_menu() 

    def create_menu(self): 
     menu2 = self.main_menu.addMenu('Menu 1') 

     Action1=QAction('Menu 1 0',self) 
     Action1.triggered.connect(self.action_1) 
     menu2.addAction(Action1) 

     Action2=QAction('Menu 1 1',self) 
     Action2.triggered.connect(self.action_2) 
     menu2.addAction(Action2) 

    def menu_1(self): 
     new=MyWindow() 
     new.setMinimumSize(320,160) 
     new.show() 

    def action_1(self): 
     print('Menu 1 0') 

    def action_2(self): 
     print('Menu 1 1') 


if __name__ == '__main__': 
    app=QApplication(sys.argv) 
    new=MyWindow() 
    new.show() 
    app.exec_() 
+0

如果你投了票,請提供你火箭科學家的原因 – Achayan