Мой код состоит из нескольких классов - некоторые из них являются виджетами пользовательского интерфейса, некоторые из них являются чистыми, а один - для хранения некоторых глобальных параметров (настройки из MainWindow, к которому я обращаюсь, от других виджетов).После разделения моего кода на один файл на класс - класс не может видеть один «глобальный класс»
Я создаю «глобальные настройки класса» прямо вместе с Mainwindow, все остальное создано MainWindow или его дочерними элементами. - Это работает до тех пор, пока весь код находится в одном файле.
Чтобы избежать глупой прокрутки, я разделил код на один файл для каждого класса. Создание «global settings-class» остается в файле с MainWindow.
Но теперь дети MainWindow не могут получить доступ к/см «глобальные настройки класса» больше ...
файлы находятся в той же папке, и я попытался import xxx
, from xxx import *
и import xxx as x
.
Прокомментировав весь «связанный» вариант (и потеряв эту функциональность), он работает.
Я просто не понимаю, почему это не должно работать после разделения всего этого.
Edit - детали:
файл 1:
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
... # A MenuBar with checkable Items, QAction calls a function which sets the option in o_option instance
def startWidgetXYZ(self):
self.setWindowTitle(...)
self.initAllChecks()
xyz = XYZ(file, topic, self)
self.setCentralWidget(xyz)
o_options = MenuBarOptions() # this is the global
app = QApplication(sys.argv)
m_window = MainWindow()
m_window.show()
sys.exit(app.exec_())
file2:
class XYZ(QWidget):
def __init__(self, file, topic, parent=None):
QWidget.__init__(self, parent)
self.k_korpus = Korpus(file, topic) # the class Korpus will load/save data from/to XML-files
file3:
class Korpus(object):
def __init__(self, file, topic):
self.file = file
self.level = level
self.patienceChecked = o_options.isOption123Checked() # NameError: global name 'o_options' is not defined - (but no error if code is in one file)
Без кода и трассировки это по существу неопровержимо. Мы можем дать вам неопределенные заявления о том, как вам нужно, чтобы глобальный объект был импортирован везде, где он вам нужен, но, не видя, как эти импортные сбой вам не удастся, мы просто будем колоть в темноте. –
ах спасибо. Я предположил, что в моей идее есть что-то неотъемлемое. – Chrugel