2012-05-07 7 views
0

У меня есть 2 класса, один из которых называется MineField, и тот, который называется «Параметры», в классе параметров есть шкалы, которые я получаю из функции внутри этого класса, def assign(): , класс MineField имеет три параметра (w, h, m). Я хочу присвоить значения этим параметрам из шкал в классе «Параметры». (Я использую tkinter)Значения от класса к переменной

Class Options: 
    def __init__(self, w, h, m) 
    ... 
    minorinput = Scale.(...) 
    mainloop() 
    ... 
    def assign(): 
    self.width = widthinput.get() 
    self.height = heightinput.get() 
    self.minor = minorinput.get() 

def main(): 
    ins = Options(0,0,0) 
    ins.assign() 
    w = ins.width 
    h = ins.height 
    m = ins.minor 
    game.MineField(w,h,m) 

Так как я могу получить эти значения из весов в игру. MineField?

+0

Вы хотите сохранить w, h и m в классе минного поля? – Martol1ni

+0

err ... вы только что сделали, передав их в качестве параметров? –

+0

Хотите ли вы изменить значения в середине игры, т. Е. Когда изменяется self.width, Minefield получает уведомление об изменении? Это будет шаблон публикации. –

ответ

1

Ваш код очень необычен. По сути, вы не можете делать то, что вы просите. По крайней мере, не так, как вы пытаетесь это сделать.

Знаете ли вы, что после того, как вы позвоните mainloop, оставшаяся часть вашего кода после этого утверждения не будет работать до тех пор, пока вы не уничтожите свое окно? После того, как окно будет уничтожено, вы не можете запрашивать виджеты для своих значений, так как они не существуют.

+0

Итак, что вы предлагаете? Что произойдет, если я закрою окно «Параметры»? – tivon

+0

Я хочу, чтобы виджеты «держали» свои значения (по крайней мере, до тех пор, пока я не создал игру. MineField-object). Так ли «снимать» работу? – tivon

+0

@tivon: как вы структурировали свой код, вы не можете создать объект MineField до тех пор, пока класс Options не будет уничтожен (поскольку его конструктор запускает бесконечный цикл, вызывая 'mainloop', который заканчивается только тогда, когда это окно разрушен). После того, как параметры были уничтожены, значения больше не будут доступны. Вам нужно перепроектировать решение. –

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