Qt-显示父级后,无法显示Qt.Tool窗口



我基本上有一个QMainWindow和一个Dialog窗口,其构造函数如下所示;

class VisualTool(QtGui.QDialog):
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self, parent)
        self.WidgetBoard = Ui_Aesthetics_Tool()
        self.WidgetBoard.setupUi(self)
        self.setWindowFlags(QtCore.Qt.Tool)    # <-

正如你所看到的,我想把对话框当作一个工具窗口(这正是我需要的窗口类型)。点击QMainWindow按钮后,应显示工具窗口,以便继续与QMainWindow交互。

在显示QMainWindow之前,在我的工具窗口上调用.show()会正确生成它
但是,如果我在显示QMainWindow之后(例如单击按钮之后)尝试显示我的Tool窗口,那么调用.show()和.exec()将没有任何效果。

(甚至没有任何窗口闪烁。没有任何产卵!)

显示窗口后,我无法更改窗口标志。它没有效果。

如何显示此工具窗口
谢谢


PyQt4
python 2.7.2
windows 7

我不确定我是否理解您的问题。这个测试代码片段似乎运行良好,尽管我不知道您丢失的Ui_Esthestics_Tool()代码是如何修改工具窗口的:

#!/usr/bin/env python
import sys
from PyQt4 import QtCore, QtGui

class Main(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(Main, self).__init__(parent)
        self.resize(640,480)        
        self.button = QtGui.QPushButton("Click me")
        self.setCentralWidget(self.button)
        self.button.clicked.connect(self.showTool)
    def showTool(self):
        tool = VisualTool(self)
        tool.show()
class VisualTool(QtGui.QDialog):
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self, parent)
        # self.WidgetBoard = Ui_Aesthetics_Tool()
        # self.WidgetBoard.setupUi(self)
        self.setWindowFlags(QtCore.Qt.Tool)

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = Main()
    myapp.show()
    sys.exit(app.exec_())

我可以启动多个工具窗口。至于使用exec_(),这是一个模式阻塞调用,可能不是您想要的。

最新更新