как вызвать функцию из другого класса в python pyqt - PullRequest
0 голосов
/ 18 апреля 2020

Простите, что слишком усложнил, вот как это произошло. поэтому у меня есть эти два класса: один windowm и другой modelm, я пытаюсь заставить его перезапускаться всякий раз, когда вызывается newGame (), так что вот некоторые фрагменты кода:

class windowm(QMainWindow):
    def __init__(self):
        super(windowm, self).__init__()

        # a generic widget for the center of the window
        widget = QWidget()
        self.setCentralWidget(widget)

и другой класс :

class Model:
    def __init__(self):
        # setup is just starting a new game, so use that method
        self.newGame()

    def newGame(self):

        super(windowm, self).__init__()

да, я понимаю, что это сложно, и простите меня за это, вот каково это задание. Итак, я понимаю, что на этот вопрос уже был дан ответ, прежде чем у меня появился этот один раздражающий уникальный сценарий так как вы можете видеть во втором фрагменте кода, я пытаюсь заставить его перейти обратно в класс "windowM" и в функцию init (self), чтобы перезапустить игру. Пожалуйста, помогите и спасибо!

1 Ответ

1 голос
/ 18 апреля 2020

Вам нужно будет создать новый экземпляр вашего другого класса, а затем использовать его для вызова игровой функции.

Я думаю, что вы захотите изменить свой класс игры, чтобы было легче начать новая игра из другого класса.

class Model:
    def startNewGame(self):
        # setup is just starting a new game, so use that method
        self.newGame()

    def newGame(self):

        super(windowm, self).__init__()

Тогда ее можно использовать так:

class windowm(QMainWindow):
    def __init__(self):
        super(windowm, self).__init__()

        # a generic widget for the center of the window
        widget = QWidget()
        self.setCentralWidget(widget)
        # create an instance of the other class
        ng = Model()
        # start a new game
        ng.startNewGame()
...