2015-12-07 3 views
0

Я пытаюсь построить игру, в которой вы можете играть в пятерку подряд, и когда кто-то выигрывает, я хочу, чтобы метка изменилась, как «Игра идет» на «Игрок 1 выиграл», и вот где я застрял ,Изменить ярлык в tkinter внутри класса? STRINGVAR()?

То, как я построил все это так. У меня есть один класс для графики (Frame), и у меня есть один класс для всех кнопок, которые вы можете щелкнуть, чтобы установить его в «X» или «O». И тогда у меня есть последний класс, который проверяет, имеет ли сетка пять значений в строке, и каждый из них запускается после каждого успешного клика.

Ярлык, конечно, установить в классе кадров и первый у меня было так просто, чтобы убедиться, что я мог видеть что-то

def __init__(self, master = None, rows = 10, cols = 10): 
    Frame.__init__(self, master) 
    Some other selfs.... 
    self.inforad = Label(master, text = "Game is going on") 

и это печатает красиво, так же, как я хочу. Теперь я пытаюсь часами делать это, когда кто-то побеждает, и я просто не могу заставить его работать! Последнее, что я пытался это использовать STRINGVAR(), и я сделал это, как этот

self.info = StringVar() 
    self.info.set("Game is going on") 
    self.inforad = Label(master, text = self.info) 

и для стартера это не работает на всех, он печатает PY_VAR0. Мой план состоял в том, чтобы определить способ вызова этого во время игры, например:

def disp(self, string): 

    self.info.set(string) 
    return self.info 

И это не работает вообще. Может кто-то помочь мне с этим? Я действительно новичок в программировании, сделал свой первый код примерно 3 недели назад.

ответ

0

(Если self.inforad находится в пределах экземпляра подкласса кадра, self, его master должен быть self, не хозяин сам.)

Что касается вашего конкретного вопроса, изменить Label(master, text = self.info) к Label(self, textvariable = self.info).

+0

"(Если self.inforad помещается в экземпляр подкласса Frame, сам его хозяин должен быть сам, а не хозяином себя.)« Можете ли вы это объяснить? – Claessie

+0

Теперь его работа, мне пришлось изменить текст в текстовую переменную! :) Мастер-штучка кажется прав, если я изменю его на себя, он создаст целую новую вкладку и все испортит, может быть, что-то в остальной части кода, о которой вы не знаете :) В любом случае. СПАСИБО! :) – Claessie

Смежные вопросы