在PyQt4中在新窗口中制作qwidget

发布于 2024-08-30 20:49:11 字数 415 浏览 4 评论 0原文

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

I'm trying to make a class that extends qwidget, that pops up a new window, I must be missing something fundamental,

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)

when a new instance of this is made in main window's class, and show() called, the content is overlaid on the main window, how can I make it display in a new window?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

绿萝 2024-09-06 20:49:11

遵循 @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_()

follow the advice that @ChristopheD gave you and try this instead

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_()
我也只是我 2024-09-06 20:49:11

您的超类初始值设定项是错误的,您可能的意思是:(

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 个空格或单个制表符被认为更好)。

Your superclass initialiser is wrong, you probably meant:

class NewQuery(QtGui.QWidget):
    def __init__(self, parent):
        QtGui.QWidget.__init__(self, parent)

(a reason to use super):

class NewQuery(QtGui.QWidget):
    def __init__(self, parent):
        super(NewQuery, self).__init__(parent)

But maybe you want inherit from QtGui.QDialog instead (that could be appropriate - hard to tell with the current context).

Also note that the indentation in your code example is wrong (a single space will work but 4 spaces or a single tab are considered nicer).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文