在下面提到的示例中,当我多次单击“视图”菜单下的“帮助”子菜单时,它会创建多个窗口。有人能告诉我怎么解决这个问题吗?你知道吗
import sys
from PySide import Qt Gui
from PySide.QtCore import Qt
class Window(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.menu_bar()
def menu_bar(self):
helpAction = QtGui.QAction('&Help', self)
helpAction.setShortcut('Ctrl+H')
helpAction.triggered.connect(self.add_helpWindow)
menu = self.menuBar().addMenu('View')
menu.addAction(helpAction)
def add_helpWindow(self):
window = QtGui.QMainWindow(self)
window.setWindowTitle('New Window')
window.show()
if __name__ == '__main__':
import sys
app=QtGui.QApplication.instance()
if not app:
app = QtGui.QApplication(sys.argv)
window = Window()
window.resize(300, 300)
window.show()
sys.exit(app.exec_())
您的帮助窗口只是一个
QMainWindow
,它不是模态的,并且对可以存在的数量没有限制。因此,如果您多次选择“帮助”选项,就会得到多个窗口。你知道吗您可能想使用一个^{} ,它有它的
modal
属性集。虽然没有什么强迫一次只存在一个对话框,但是模态意味着只要该窗口打开,用户就只能与该窗口交互。示例:您还可以使用^{} 获得更通用的对话框,它是
QMessageBox
的父类。你知道吗如果这不是您想要的行为,那么您需要手动跟踪用户以前是否打开过该窗口,然后将用户关闭帮助窗口时发出的信号连接到重置存在跟踪器的插槽。下面是一个使用非模态
QDialog
的示例:相关问题 更多 >
编程相关推荐