【问题标题】:PyQt using classes to show buttonPyQt 使用类来显示按钮
【发布时间】:2017-06-08 07:43:57
【问题描述】:

在这里非常卡住,我正在尝试学习如何使用类,因此当按钮位于不同的类中时,我只想在窗口上显示一个按钮。这是我尝试使用的代码:

#!/usr/bin/python3

import sys
from PyQt4 import QtGui, QtCore

class Window(QtGui.QDialog):

    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.setGeometry(0, 0, 800, 600)
        main_menu = Menu()

        self.show()

class Menu(QtGui.QWidget):

    def __init__(self):
        btn = QtGui.QPushButton("Quit")
        btn.resize(btn.sizeHint())
        btn.move(100,100) 
        btn.show()
        print("Hello I am a menu")




def main():
    app = QtGui.QApplication(sys.argv)
    main_window = Window()

    sys.exit(app.exec())


if __name__ == "__main__":
    main()

这在我得到一个窗口时有效,但上面没有按钮,但是我输入的打印消息有效。请问我做错了什么?

【问题讨论】:

  • 不要乱用其他类的按钮。
  • 更改为sys.exit(app.exec_())

标签: python python-3.x pyqt pyqt4 qwidget


【解决方案1】:

除了将父类传递给该类和按钮之外,您还必须在 Menu 中初始化父类。

import sys
from PyQt4 import QtGui, QtCore

class Window(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.setGeometry(0, 0, 800, 600)
        main_menu = Menu(self)
        self.show()

class Menu(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        btn = QtGui.QPushButton("Quit", self)
        btn.resize(btn.sizeHint())
        btn.move(100,100) 
        print("Hello I am a menu")

def main():
    app = QtGui.QApplication(sys.argv)
    main_window = Window()

    sys.exit(app.exec_())


if __name__ == "__main__":
    main()

【讨论】:

  • sys.exit(app.exec_()) 改为
  • eyllanesc,没问题。
  • 非常感谢eyllanesc,这给了我一个很好的起点。
  • @iFunction 如果我的回答对你有帮助,请标记为正确
  • @furas,我完全明白你的意思,这看起来很乱,实际上,我正在尝试正确理解类,对于我想要的,我想使用一个类来为我的应用程序定义菜单
猜你喜欢
  • 2021-12-18
  • 2017-09-22
  • 2015-06-30
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多