PyQt5 - 获取QFileDialog的QGridLayout

时间:2016-09-18 17:08:04

标签: python python-3.x pyqt pyqt5 qfiledialog

我正在尝试在PyQt5中创建我自己的QFileDialog,对其原始的QGridLayout进行一些修改。

在PyQt4中,我只是将QFileDialog子类化,并在__init__中的某处调用了self.layout(),它返回了QFileDialog的QGridLayout,然后我就可以自由地做我需要的了。

最近,我被迫在Python3中切换到PyQt5。 self.layout(),findChildren()等没有返回相同的结果(有时会返回None)。

再次,我正在尝试在PyQt5中获取QFileDialog的QGridLayout实例。另外,我正在使用python 3.5,如果它改变了什么。谁知道怎么做?

编辑1 - 添加了一个示例:

PyQt4 - 在Python 2.7.10上测试

import sys
from PyQt4 import QtGui


class MyQFileDialog(QtGui.QFileDialog):
    def __init__(self, parent=None):
        super(MyQFileDialog, self).__init__(parent=parent)
        print(self.layout())  # <=--- Returns <PyQt4.QtGui.QGridLayout object>


def window():
   app = QtGui.QApplication(sys.argv)
   w = MyQFileDialog()
   w.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   window()

PyQt5 - 在Python 3.5.2上测试

import sys
from PyQt5 import QtWidgets


class MyQFileDialog(QtWidgets.QFileDialog):
    def __init__(self, parent=None):
        super(MyQFileDialog, self).__init__(parent=parent)
        print(self.layout())  # <=--- Returns None


def window():
   app = QtWidgets.QApplication(sys.argv)
   w = MyQFileDialog()
   w.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   window()

0 个答案:

没有答案