我正在尝试创建一个扩展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()时,内容将叠加在主窗口上,如何在新窗口中显示?
答案 0 :(得分: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 :(得分: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
继承(这可能是合适的 - 很难用当前的背景来判断)。
另请注意,代码示例中的缩进是错误的(单个空格可以工作,但是4个空格或单个制表符被认为更好)。