我正在尝试做一个扩展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()调用,内容在主窗口中被覆盖时,如何使其在新窗口中显示?

有帮助吗?

解决方案

您的超级阶级初始评估器是错误的,您可能的意思是:

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 相反(这可能是适当的 - 很难在当前上下文中分辨)。

另请注意,您的代码示例中的凹痕是错误的(单个空间将起作用,但是4个空格或一个选项卡被认为更好)。

其他提示

遵循@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_()
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top