题
我正在尝试做一个扩展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_()
不隶属于 StackOverflow