我对python很陌生,我试图制作一个简单的GUI程序。但是,我遇到了一个"问题",确切地说是一个警告,上面写着:'m'没有在全局范围内定义(Python(variable-not-defined-global((。
我知道如果你想在该函数范围之外访问它,你需要在函数内声明一个 var 全局。虽然我不在函数外部使用这个新创建的变量,但如果我不将其声明为全局,我的程序只显示 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_()
你能解释一下为什么会这样吗?提前感谢!
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_()
在show()
使用它之前,您还应该在全局范围内声明m
。您可以通过在呼叫show()
之前设置m=None
来执行此操作。