2016-11-24 7 views
0

私は、親Uiのボタンが押されたときに作成されて表示されるUiDialogueを設定しようとしています。Qt.FramelessWindowHintで子ダイアログを表示するPyQt/PySide

親ダイアログをフレームなし(期待どおりに表示されている)にしたいのですが、子ダイアログはフレームで作成されている場合のみ表示されます。

24行目のコメントアウトされた行のコメントが外されていると、ウィンドウは表示されませんが、アプリは何らかのエラーを通知しません。誰も私になぜ教えてもらえますか? 以下は、コードを削除したものです。どんな助けでも大歓迎です。

ありがとうございました。デフォルトで

import sys 
from PySide.QtCore import * 
from PySide.QtGui import * 

class Ui_box(object): 
    def setupUi(self, box): 
     box.setObjectName("box") 
     self.setWindowFlags(Qt.FramelessWindowHint); 
     box.resize(749, 344) 
     self.p_b = QPushButton(box) 
     self.p_b.setGeometry(QRect(241, 140, 141, 91)) 
     self.p_b.show() 

     self.retranslateUi(box) 
     QMetaObject.connectSlotsByName(box) 

    def retranslateUi(self, box): 
     box.setWindowTitle(QApplication.translate("WelcomeUI", "Tasker", None, QApplication.UnicodeUTF8)) 


class Ui_Innerbox(object): 
    def setupUi(self, Innerbox): 
     Innerbox.setObjectName("Innerbox") 
     #self.setWindowFlags(Qt.FramelessWindowHint); 
     Innerbox.resize(745, 340) 
     self.label = QLabel(Innerbox) 
     self.label.setText("this is me") 
     self.label.setGeometry(QRect(239, 140, 141, 91)) 
     self.label.show() 


     self.retranslateUi(Innerbox) 
     QMetaObject.connectSlotsByName(Innerbox) 

    def retranslateUi(self, Innerbox): 
     Innerbox.setWindowTitle(QApplication.translate("WelcomeUI", "Tasker", None, QApplication.UnicodeUTF8)) 



class InnerBox(QDialog, Ui_Innerbox): 

    def __init__(self, parent=None): 
     QDialog.__init__(self, parent) 
     self.setupUi(self) 




class Box(QDialog, Ui_box): 

    def __init__(self, parent=None): 
     QDialog.__init__(self, parent) 
     self.setupUi(self) 
     self.show() 
     self.p_b.clicked.connect(self.pressed_button) 

    def pressed_button(self): 

     self.Innerb = InnerBox(self) 
     self.hide() 
     self.Innerb.show() 



if __name__ == '__main__': 
    app = QApplication(sys.argv); 

    newb = Box() 
    print("made") 
    app.exec_() 

答えて

1

アイブ氏は、「子」のコントローラが初期化引数としてその親を与えられていない場合は、目的の動作を達成することができることを発見し、child.setModal(「真」)を設定

子意志その前置詞のモーダルの位置マッチを設定します。

関連する問題