私はメインウィンドウとダイアログ(質問、エラーなど)を開く可能性のあるアプリケーションを作成しました。私はQMessageBox.warning()
またはQMessageBox.question()
などを使用していません。私はダイアログを少しカスタマイズしたかったからです。PySideメインウィンドウにQDialogを表示します
しかし、新しいダイアログを開くたびに、Windowsのタスクバー(Windows 10で作業しています)に新しい「タブ」が開かれます。これはちょっと面倒です。
私のコード(短縮):
from PySide import QtCore, QtGui
import sys
class MessageBox:
def __init__(self, title, message):
msg = QtGui.QMessageBox()
flags = QtCore.Qt.Dialog
flags |= QtCore.Qt.CustomizeWindowHint
flags |= QtCore.Qt.WindowTitleHint
msg.setWindowFlags(flags)
msg.setWindowTitle(title)
msg.setText(message)
msg.exec_()
class MainWindow(QtGui.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.show()
MessageBox("Title", "My message here")
if __name__ == "__main__":
app = QtGui.QApplication([])
window = MainWindow()
sys.exit(app.exec_())
注:通常、ダイアログは、メニューやボタンから呼び出されます。
質問:新しい「タスクバータブ」を作成せずにダイアログをメインウィンドウに表示させるにはどうすればよいですか?
これを参照してくださいhttp://stackoverflow.com/a/9043996/4941927、 – Milor123
@ Milor123ありがとう、私はすでにこれのようにやっています。ボタンは 'self.mybutton.clicked.connect(self.myfunc)'を使って接続します。 'myfunc'では、ダイアログは' MessageBox( "Title"、 "My message here") 'を使って呼び出されます。何か案は? – linusg
クラスを作成してコンストラクタ内のすべての作業を行うのは意味がありません(クラスを継承するか、関数を作成するだけですか?)。メインダイアログに新しいダイアログが表示され、フォーカスとウィンドウのグループ化が正しく機能します。 –