Я пишу приложение GUI на Python, которое использует несколько сценариев .py. У меня есть переменная в QMainWindow, которую мне нужно ссылаться на/access в других классах. У меня нет проблем с импортом различных .py-модулей в Ui_MainWindow.py-модуль, но я не могу получить доступ к переменным класса QMainWindow.Доступ к переменным класса QMainWindow - Pyside/PyQt
Это быстрый псевдо-код, что я пытаюсь:
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
self.lineEditScanBarcode.returnPressed.connect(self.LoginAttempt)
def LoginAttempt(self):
self.user_barcode = self.lineEditScanBarcode.text()
От чтения я сделал на этом обращаясь к переменным класса, я пришел к выводу, что с вышесказанным установки, я должен иметь возможность обратиться к переменной «user_barcode» в других классах следующим образом:
class Receipt(QWidget, Ui_Receipt):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.setupUi(self)
print(MainWindow.user_barcode)
Я с помощью команды «печать» просто чтобы проверить является ли это работает, но я получаю следующее сообщение об ошибке :
Attribute Error: type object 'MainWindow' has no attribute 'user_barcode'
Может ли кто-нибудь увидеть ошибку, которую я, очевидно, делаю? Я искал SO для подобных запросов, но не нашел ничего подходящего.
Спасибо!
EDIT:
Вот настройки app.exec_(), я не уверен, если я передаю родитель правильно.
if __name__ == '__main__':
app = QApplication(sys.argv)
showMainWindow = MainWindow()
showReceipt = Receipt(MainWindow)
showMainWindow.show()
app.exec_()
Я пробовал различные комбинации, но я либо получать ошибку инициализации или поднятый TypeError.
Спасибо за то ekhumoro, что на самом деле имеет больше смысла. Я изменил свой код, чтобы включить то, что вы разместили выше, и теперь я получаю: TypeError: __init() __ отсутствует 1 обязательный позиционный аргумент: 'parent'. Это происходит, когда я сначала ссылаюсь на модуль Receipt при настройке if __name__ == '__main__': declaration и app.exec_(). Есть идеи? – jars121
Ну, это говорит вам, что вам нужно передать «родительский»: то есть окно = MainWindow(); receipt = Receipt (window) – ekhumoro
Я пробовал передать родителя, как вы предлагаете (см. выше), но теперь он возвращает поднятый TypeError. Еще раз спасибо за вашу помощь, это очень ценится! – jars121