1

我正在尝试创建一个扩展 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() 时,内容覆盖在主窗口上,我怎样才能让它显示在新窗口中?

4

2 回答 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_()
于 2010-05-01T22:36:50.293 回答
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)

但也许你想继承 from QtGui.QDialog(这可能是合适的——很难用当前的上下文来判断)。

另请注意,您的代码示例中的缩进是错误的(单个空格可以工作,但 4 个空格或单个制表符被认为更好)。

于 2010-05-01T22:11:01.917 回答