这个想法是从父窗口菜单打开一个子窗口,当我最小化父窗口时,子窗口也必须最小化,并且只能打开一个子窗口。 当父窗口最小化时,我有最小化子窗口的解决方案,但是我可以多次打开子窗口(尽管子窗口已经打开),并且我想禁用打开多个子窗口。在
父窗口主窗口.py:
class MainWindow(QtGui.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setWindowTitle('Parent window')
self.flags = QtCore.Qt.Window
self.ControlPanel = Control_panel_window()
self.createActions()
self.createMenus()
def createActions(self):
# window - menu
self.windowShowControlPanelAction = QtGui.QAction(self.tr("&Control panel"), self, statusTip='Control panel')
self.connect(self.windowShowControlPanelAction, QtCore.SIGNAL("triggered()"), self.ShowControlPanel)
def createMenus(self):
# window
self.windowMenu = QtGui.QMenu(self.tr("&Window"), self)
self.windowMenu.addAction(self.windowShowControlPanelAction)
self.menuBar().addMenu(self.windowMenu)
def ShowControlPanel(self):
self.ControlPanel = Control_panel_window(self)
self.ControlPanel.setWindowFlags(QtCore.Qt.Window)
self.ControlPanel.show()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
win = MainWindow()
win.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
win.show()
sys.exit(app.exec_())
子窗口儿童窗口.py:
^{pr2}$问题是:如何设置只打开一个子窗口?在
在您的
ShowControlPanel
函数中,每次触发信号时都会创建一个新的控制面板。既然你已经有了一个可用的实例,为什么不改用它呢?在一些文体注释:
CamelCase
用于类,lowercase_with_underscore
用于几乎所有其他类。在本例中,,因为Qt
使用halfCamelCase
作为方法等,您可以使用它来保持一致性。在使用new-style signal syntax:
^{pr2}$而不是:
它不仅读起来更好,而且提供了更好的调试信息。如果信号不存在,使用
QtCore.SIGNAL
你将不会收到错误(例如,你写了一个类似trigered()
而不是triggered()
)的错误。新的语法会引发一个异常,在这种情况下,您将能够更早地更正错误,而不必猜测为什么某些内容无法正常工作,也不必搜索整个代码库以查找键入错误。相关问题 更多 >
编程相关推荐