在PyQt4中将qwidget放入新窗口
我正在尝试创建一个类,这个类是从qwidget扩展出来的,目的是弹出一个新窗口。我觉得我可能漏掉了一些基本的东西。
class NewQuery(QtGui.QWidget):
def __init__(self, parent):
QtGui.QMainWindow.__init__(self,parent)
self.setWindowTitle('Add New Query')
grid = QtGui.QGridLayout()
label = QtGui.QLabel('blah')
grid.addWidget(label,0,0)
self.setLayout(grid)
self.resize(300,200)
当我在主窗口的类里创建这个类的新实例,并调用show()方法时,内容却覆盖在主窗口上。我该怎么做才能让它在新窗口中显示呢?
2 个回答
2
按照@ChristopheD给你的建议,试试这个方法。
from PyQt4 import QtGui
class NewQuery(QtGui.QWidget):
def __init__(self, parent=None):
super(NewQuery, self).__init__(parent)
self.setWindowTitle('Add New Query')
grid = QtGui.QGridLayout()
label = QtGui.QLabel('blah')
grid.addWidget(label,0,0)
self.setLayout(grid)
self.resize(300,200)
app = QtGui.QApplication([])
mainform = NewQuery()
mainform.show()
newchildform = NewQuery()
newchildform.show()
app.exec_()
1
你的父类初始化器写错了,可能你想写的是:
class NewQuery(QtGui.QWidget):
def __init__(self, parent):
QtGui.QWidget.__init__(self, parent)
(使用 super
的一个理由):
class NewQuery(QtGui.QWidget):
def __init__(self, parent):
super(NewQuery, self).__init__(parent)
不过,也许你想从 QtGui.QDialog
继承(这可能是合适的,但根据目前的上下文很难判断)。
另外,注意你代码示例中的缩进是错的(一个空格可以用,但四个空格或一个制表符会显得更好)。