Как вернуть строку вместо PY_VAR - PullRequest
0 голосов
/ 10 июля 2020

ПОМОЩЬ! Все еще изучаю Python здесь. Почему я получаю возвращаемый PY_VAR1 вместо строки в «QUOTE1» (во внешнем файле). И есть ли способ очистить экран для отображения следующего экземпляра. На данный момент цитаты накладываются друг на друга, а не по очереди. Спасибо за помощь!

def updateQuote(self):
    self.quoteNumber = 1

    if (self.quoteNumber <=10):
        quote = "QUOTE"+str(self.quoteNumber)
        self.quote=StringVar()
        self.quote.set(self.quote)
        self.msg = Message(self.window,textvariable=self.quote,
                           width=300,font=("Aria",24))
        self.quoteNumber+=1
            
        self.msg.pack(side=TOP)

        self.window.after(3000,self.updateQuote)

1 Ответ

1 голос
/ 10 июля 2020
Отображается

PY_VAR1, потому что self.quote передается в self.quote.set(). Вместо этого следует использовать quote.

Чтобы показать только один экземпляр цитаты, нужно создать self.msg один раз и обновить его текст внутри updateQuote() через self.quote.

Также не следует сбрасывать self.quoteNumber в 1 при каждом запуске updateQuote().

def __init__(self):
    ...
    # moved from self.updateQuote()
    self.quote = StringVar()
    self.msg = Message(self.window, textvariable=self.quote, width=300, font=("Aria",24))
    self.msg.pack(side=TOP)
    ...
    # start the quote display
    self.updateQuote()

def updateQuote(self, quoteNumber=1):
    if quoteNumber <= 10:
        quote = "QUOTE" + str(quoteNumber)
        self.quote.set(quote) # update self.msg
        self.window.after(3000, self.updateQuote, quoteNumber+1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...