El nombre ‘xxx’ no está definido

¿Por qué estas dos funciones no quieren trabajar?

class Window(QtGui.QMainWindow): def __init__(self): super(Window, self).__init__() self.setGeometry(500, 150, 500, 600) self.home() def home(self): btn_run = QtGui.QPushButton("Run", self) btn_run.clicked.connect(self.run) btn_run.resize(120, 40) btn_run.move(220, 540) self.show() def view_splash(arg1): label = QLabel("<font color=red size=10" + n[arg1] + "") label.setWindowFlags(Qt.SplashScreen | Qt.WindowStaysOnTopHint) label.show() QtCore.QTimer.singleShot(10000, label.hide) def run(self): for i in range(len(lines)): n = random.choice(words) view_splash(0) view_splash(1) time.sleep(600) 

Tengo ese error

  view_splash(0) NameError: name 'view_splash' is not defined 

¿Qué estoy haciendo mal? ¿Cómo debería ser esto?

En Python, es necesario usar self para acceder a otros métodos y atributos del mismo objeto. Cuando simplemente llama view_splash , python busca la definición de la función pero no verá los métodos de Window . view_splash explícitamente view_splash con self. Python sabe que desea el método Window.view_splash y debería funcionar como espera.

Entonces, para su código específico, esto requerirá que actualice su método de run para que sea el siguiente:

 def run(self): for i in range(len(lines)): n = random.choice(words) self.view_splash(0) self.view_splash(1) time.sleep(600) 

Supongo que hay un código adicional fuera de la clase que define lines y words como variables globales a las que Window.run puede acceder.