Python错误:全局声明的变量未在全局范围内声明

问题描述 投票:0回答:2

我是python的新手,我试图制作一个简单的GUI程序。但是,我遇到了一个“问题”,一个警告,说:'m'没有在全局范围内定义(Python(变量未定义 - 全局))。

我知道如果你想在函数范围之外访问它,你需要在函数内声明一个var global。虽然我不在函数外部使用这个新创建的变量,但是如果我没有将它声明为全局变量,我的程序只会在几分之一秒内显示GUI,然后关闭它。

import sys
from PyQt5.QtWidgets import QApplication, QWidget

def show():
    global m
    m = QWidget()
    m.setWindowTitle("Testing this app")
    m.show()

MYAPP = QApplication(sys.argv)
show()
MYAPP.exec_()

你能解释一下为什么会这样吗?提前致谢!

python variables global-variables
2个回答
0
投票

global告诉python在全局命名空间中查找具有此名称的变量,并将其包含在本地命名空间中。这意味着它必须首先存在于全局命名空间中。

import sys
from PyQt5.QtWidgets import QApplication, QWidget

m = None  # variable must exist in global namespace first

def show():
    global m  # this creates a local m that is linked to the global m
    m = QWidget()
    m.setWindowTitle("Testing this app")
    m.show()

MYAPP = QApplication(sys.argv)
show()
MYAPP.exec_()

0
投票

在show()使用之前,您还应该在全局范围内声明m。您可以通过在调用show()之前设置m=None来完成此操作。

© www.soinside.com 2019 - 2024. All rights reserved.