Ошибка Python: объявленная глобальная переменная не объявлена ​​в глобальной области видимости - PullRequest
0 голосов
/ 19 апреля 2019

Я новичок в python, и я попытался сделать простую программу с графическим интерфейсом. Но я попал в «проблему», точно предупреждение, которое гласит: «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_()

Не могли бы вы объяснить, почему это происходит? Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

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 голосов
/ 19 апреля 2019

Вы должны также объявить m в глобальной области видимости, прежде чем он будет использован show (). Вы можете сделать это, установив m=None непосредственно перед вызовом show ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...