我基本上有一个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) # <-
正如您所看到的,我想将Dialog视为工具窗口(它正是我需要的窗口类型)。单击QMainWindow后,应显示工具窗口,并与QMainWindow进行交互以继续。
在显示QMainWindow之前,在我的工具窗口上调用.show()会正确生成它。
但是,如果我尝试在显示QMainWindow之后显示我的工具窗口(例如在单击按钮后),则调用.show()和.exec()无效。
(甚至没有任何窗口的闪烁。没有任何产生!)
显示窗口后,我无法更改窗口标志。它没有效果。
如何显示此工具窗口?!
谢谢!
PyQt4中
python 2.7.2
Windows 7
答案 0 :(得分:1)
我不确定我明白你的问题究竟是什么。这个测试代码片段似乎运行正常,但我不知道你缺少的Ui_Aesthetics_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_(),这是一个模态阻塞调用,可能不是你想要的。