Доступ к переменным в графическом интерфейсе - PullRequest
0 голосов
/ 09 декабря 2011

Привет всем, у меня есть этот код, который, кажется, не работает.Я думаю, потому что мой метод birthCalc пытается получить доступ к переменным в методе init .Мой вопрос заключается в том, как мне изменить это, чтобы моя программа могла обращаться к этим элементам графического интерфейса и их сохраненным значениям.

* Обратите внимание, что я пытаюсь получить доступ к переменным в начале метода birthCalc.

class GUI:
    def __init__ (self):
        self.app=Tk()
        bottomFrame=Frame(self.app)
        bottomFrame.pack(side="bottom",pady=10)
        self.app.title("When will you be 1 billion seconds old? ")
        Label(self.app,text="Please enter your birthday").pack()
        Label(self.app, text="Month").pack(side="left",padx=2)
        month=IntVar()
        month.set(1)
        months=range(1,13)
        monthMenu=OptionMenu(self.app,month, *months)
        monthMenu.pack(side="left")

        Label(self.app, text="Day").pack(side="left",padx=2)
        day=IntVar()
        day.set(1)
        days=range(1,32)

        dayMenu=OptionMenu(self.app,day, *days)
        dayMenu.pack(side="left")

        Label(self.app, text="Year").pack(side="left",padx=2)
        year=IntVar()
        year.set(1901)
        years=range(1901,2012)
        yearMenu=OptionMenu(self.app,year, *years).pack(side="left")

        Label(self.app, text="Hour").pack(side="left",padx=2)
        hour=IntVar()
        hour.set(0)
        hours=range(0,25)
        hourMenu=OptionMenu(self.app,hour, *hours).pack(side="left")

        Label(self.app, text="Minute").pack(side="left",padx=2)
        minute=IntVar()
        minute.set(0)
        minutes=range(00,60)
        minuteMenu=OptionMenu(self.app,minute, *minutes).pack(side="left")

        Label(self.app, text="Second").pack(side="left",padx=2)
        second=IntVar()
        second.set(0)
        seconds=range(0,60)
        secondMenu=OptionMenu(self.app,second, *seconds).pack(side="left")

        Button(bottomFrame,text="Calculate", command=self.birthCalc).pack()
        textVar=StringVar()
        textVar.set("You will turn 1 billion seconds old on: ")
        Label(bottomFrame,text=textVar.get()).pack(side="bottom",pady=5)


    def birthCalc(self):
        YEARSEC=31104000 #Values used for converting specified unit into seconds
        MONTHSEC=2592000 #Ex. There are 60 seconds in a minute
        DAYSEC=86400
        HOURSEC=360
        MINUTESEC=60

        year=self.(yearMenu).get() #Get input
        month=self.monthMenu.get()-1    
        day=self.dayMenu.get()-1          #Note that 1 is subtracted because months/days start at 01 (Not 00 as python assumes)
        hour=self.hourMenu.get()
        minute=self.minuteMenu.get()
        second=self.secondMenu.get()

1 Ответ

2 голосов
/ 09 декабря 2011

Внутри __init__ функции вы должны добавить свои элементы в класс как атрибуты.Т.е. изменить monthMenu=OptionMenu(self.app,month, *months) на self.monthMenu=OptionMenu(self.app,month, *months)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...