-1
我想在菜單欄單擊(不是菜單項)後打開一個窗口。什麼是錯誤的下面的代碼:MenuBar單擊事件
self.menuHelp.triggered.connect(lambda : HelpWindow().exec_())
我想在菜單欄單擊(不是菜單項)後打開一個窗口。什麼是錯誤的下面的代碼:MenuBar單擊事件
self.menuHelp.triggered.connect(lambda : HelpWindow().exec_())
如果我理解正確,那麼你想在菜單欄點擊打開新窗口,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_()
如果你投了票,請提供你火箭科學家的原因 – Achayan
不清楚你想在這裏問什麼......如果你得到錯誤,請張貼消息...否則,解釋更多。 –
是'QApplication'類型的'HelpWindow'嗎?如果是這樣,你應該使它成爲一個'QMainWindow'和'.show()'它。 – 101
HelpWindow是一個派生自QDialogBox的類。 –