【问题标题】:PyQt / PySide displaying child dialogue with Qt.FramelessWindowHintPyQt / PySide 使用 Qt.FramelessWindowHint 显示子对话
【发布时间】:2017-04-08 12:16:00
【问题描述】:

本质上,我正在尝试设置一个 UiDialogue,它会在其父 Ui 中的按钮被按下时创建并显示。

我希望父对话是无框架的(按预期工作和显示),但是子对话只有在使用框架时才会显示。

如果第 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_()

【问题讨论】:

    标签: python user-interface pyqt pyside


    【解决方案1】:

    我发现如果没有将“子”控制器的父级作为初始化参数并设置 child.setModal('true'),则可以实现所需的行为

    默认情况下,孩子将设置其位置匹配其模态前身的位置。

    【讨论】:

      猜你喜欢
      • 2011-06-02
      • 2015-11-09
      • 1970-01-01
      • 2014-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多