我对python还是很陌生,我试图制作一个简单的GUI程序。 但是,我遇到了一个“问题”,恰好是一个警告,它说: 未在全局范围(Python(未定义变量,未全局定义))中定义'm'。
我知道,如果要在该函数范围之外访问它,则需要在一个函数内部声明一个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_()
您能解释一下为什么会这样吗?预先感谢!
答案 0 :(得分:0)
在show()使用m之前,还应该在全局范围中声明m。您可以通过在调用show()之前设置m=None
来实现此目的。
答案 1 :(得分: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_()