首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >交互后PyQt5崩溃

交互后PyQt5崩溃
EN

Stack Overflow用户
提问于 2021-04-16 06:47:39
回答 1查看 42关注 0票数 1

我一直在用PyQt5编写应用程序,当我试图在按钮交互后打开一个新窗口时,程序崩溃,并输出退出代码-1073740791。

我的代码如下所示:

代码语言:javascript
复制
class Start(QWidget):

    def __init__(self):
        super().__init__()

        self.run()

    def switch1(self):
        Initiative.initRoll.show()

    def startScreen(self):
        startButton = QPushButton('Start')
        infoButton = QPushButton('How To Use')
        creditButton = QPushButton('Credits')
        settingButton = QPushButton('Settings')

        grid = QGridLayout()

        grid.addWidget(infoButton, 0, 0)
        grid.addWidget(settingButton, 0, 1)
        grid.addWidget(creditButton, 0, 2)
        grid.addWidget(startButton, 1, 0, 1, 3)

        self.setLayout(grid)

        startButton.clicked.connect(self.switch1)

        self.setWindowTitle('Battletech App')

    def run(self):

        Start.startScreen(self)
        self.show()

class Initiative(QWidget):

    def initRoll(self):

        initButton = QPushButton('Roll for Initiative')

        grid = QGridLayout()

        grid.addWidget(initButton, 2, 0, 1, 3)

        self.setLayout(grid)

        self.setWindowTitle('Battletech App')

def main():

    app = QApplication(sys.argv)
    ex = Start()
    sys.exit(app.exec_())

我已经弄乱了大部分代码,试图修复它,但我不确定如何修复。

EN

回答 1

Stack Overflow用户

发布于 2021-04-16 07:48:09

如果您希望获得更具描述性的错误消息,那么建议您从CMD或控制台运行代码。在您的情况下,它是:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/path/of/script.py", line 14, in switch1
    Initiative.initRoll.show()
AttributeError: 'function' object has no attribute 'show'
Aborted (core dumped)

原因很清楚,您正在错误地处理对象的创建。逻辑是使用类作为对象提供程序,并使用该对象调用函数(建议:查看您在OOP上的注释)。

代码语言:javascript
复制
def switch1(self):
    self.initiative = Initiative()
    self.initiative.initRoll()
    self.initiative.show()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67116907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档