添付のスクリプト例では、MyDialogの親を20行目に自分自身を空白のままにしておくと、MyDialogのインスタンスが正しく表示されないのはなぜですか?最初に私はショートカットがどうにかして動作しなくなったと思ったが、明らかにそれはそうではない。tインスタンシエーションで親を設定すると、ダイアログが正しく表示されないのはなぜですか?
この場合、親が設定されているかどうかは実際には違いはありませんが、実際には親を設定する必要があります。
私はここで何かが分かりませんか?
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class MyDialog(QDialog):
def __init__(self, parent=None):
QDialog.__init__(self, parent)
self.setWindowFlags(Qt.FramelessWindowHint)
self.setFocusPolicy(Qt.StrongFocus)
label = QLabel(self)
label.setText("World")
hbox = QHBoxLayout()
hbox.addWidget(label)
self.setLayout(hbox)
class MainWindow(QMainWindow):
def __init__(self, parent=None):
QMainWindow.__init__(self, parent)
self.my_dialog = MyDialog()
#self.my_dialog = MyDialog(self)
label = QLabel(self)
label.setText("Hello")
self.setCentralWidget(label)
shortcut = QShortcut(QKeySequence(Qt.Key_Tab), self, self.show_my_dialog)
shortcut.setContext(Qt.ApplicationShortcut)
self.show()
def show_my_dialog(self):
md = self.my_dialog
if md.isVisible():
md.hide()
print 'hide'
else:
md.show()
print 'show'
def main():
app = QApplication([])
main_window = MainWindow()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
どのように正しく表示されないのか詳しく説明できますか? –
全く表示されません。スクリプトは 'Tab'を押したときに' hide 'と 'show'をコンソールに出力するので、ショートカットは機能しますが、' md.show() 'は効果がないようです。面白いことに、 'self.setWindowFlags(Qt.FramelessWindowHint)'行を削除すると、ダイアログが正しく表示されます。 – c00kiemonster