Область действия переменной PyQt5 — PythonPython

Программы на Python
Ответить
Anonymous
 Область действия переменной PyQt5 — Python

Сообщение Anonymous »

У меня есть этот код, я пытаюсь понять, как работать с двумя окнами в PyQt5
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.uic import loadUi
import sys

class MainUI(QMainWindow):

def __init__(self):
super(MainUI, self).__init__()

# Load interface
loadUi ("window1.ui", self)

self.pushButton.clicked.connect(self.open_window)
self.pushButton_2.clicked.connect(self.disconnect)

def open_window (self):
window2.show()

def close__window (self):
window2.close()

def disable_interface (self):
window2.close()

def disconnect (self):
self.disable_interface()

class SecondUI(QMainWindow):

def __init__(self):
super(SecondUI, self).__init__()

# Load interface
loadUi ("window2.ui", self)

if __name__ == "__main__":
app = QApplication (sys.argv)
window = MainUI()
window2 = SecondUI()
window.show()
app.exec_()

window1.ui и window2.ui не имеют значения.
Этот код работает нормально.
Но в тот момент, когда я добавляю метод Disable_interface в конструктор __init__, как показано ниже, я получаю

NameError: имя 'window2' не определено

На мой взгляд, этого не должно быть происходит, поскольку window2 определяется глобально. Но, очевидно, я ошибаюсь....
Вопрос в том, как мне решить эту проблему, чтобы она работала. Мне нужна эта функция для работы в инициализации...
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.uic import loadUi
import sys

class MainUI(QMainWindow):

def __init__(self):
super(MainUI, self).__init__()

# Load interface
loadUi ("window1.ui", self)

self.disable_interface()
self.pushButton.clicked.connect(self.open_window)
self.pushButton_2.clicked.connect(self.disconnect)

def open_window (self):
window2.show()

def close__window (self):
window2.close()

def disable_interface (self):
window2.close()

def disconnect (self):
self.disable_interface()

class SecondUI(QMainWindow):

def __init__(self):
super(SecondUI, self).__init__()

# Load interface
loadUi ("window2.ui", self)

if __name__ == "__main__":

app = QApplication (sys.argv)
window = MainUI()
window2 = SecondUI()
window.show()
app.exec_()


Подробнее здесь: https://stackoverflow.com/questions/798 ... qt5-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»