2012-01-26 10 views
1

私は基本的にQMainWindowとそのコンストラクタが下に示されているダイアログウィンドウを持っています。Qt - 親が表示された後にQt.Toolウィンドウを表示できませんか?

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()を呼び出すと何の効果もありません。

(ウィンドウのいずれかのちらつきもありません。一切のspawnはありません!)

ウィンドウが表示されたら、私は、ウィンドウのフラグを変更することはできません。それは効果がありません。

どうすればこのツールウィンドウを表示できますか?
ありがとうございます!


PyQt4
のpython 2.7.2
窓7

+0

更新; .exec_()で表示するツールがありますが、これはQMainWindowとのやりとりを禁止します。 –

答えて

1

私は私はあなたの問題は本当に何であるか理解していません。

#!/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_()) 

私は複数のツールウィンドウを起動することができる午前:このテストコードスニペットは、私はあなたの行方不明Ui_Aesthetics_Tool()のコードは、ツールウィンドウを修正するために何をするかわかりませんが、細かい機能しているようです。 そして、exec_()を使用する場合、これはモーダルブロッキング呼び出しであり、おそらくあなたが望むものではありません。

+0

ちょうどそれを固定しました.... 私のものはあなたのものとまったく同じでした。しかし、私はちょうど '自己'を追加しました。 'ツール'に、そして今それはすべて動作します!あなたのことが今それなしではなぜ分かりません!ありがとうございました! –

関連する問題