첨부 된 예제 스크립트에서 MyDialog의 부모를 비워 두지 않고 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