2016-08-18 162 views
-3
from Tkinter import * 
import random 
entry_values = [] 
population_values = [] 

subpage = 0 

entry0 = Entry(subpage) 
entry1 = Entry(subpage) 
entry2 = Entry(subpage) 
entry3 = Entry(subpage) 
entry4 = Entry(subpage) 
entry5 = Entry(subpage) 
entry6 = Entry(subpage) 
entry7 = Entry(subpage) 


def main_menu(root): 
    menu = Frame(root) 
    button0 = Button(menu, text="Set Generation Zero Values", 
       command=lambda: switch_page("sub")) 
    button0.grid(row=0, column=0, sticky=W) 

    button1 = Button(menu, text="Display Generation Zero Values", 
       command = lambda: switch_page("sub2")) 
    button1.grid(row=1, column=0, sticky=W) 

    button2 = Button(menu, text="Run Model", 
       command = lambda: switch_page("sub3")) 
    button2.grid(row=2, column=0, sticky=W) 

    button3 = Button(menu, text="Export Data") 
    button3.grid(row=3, column=0, sticky=W) 

    button4 = Button(menu, text="Exit Program", command=menu.destroy) 
    button4.grid(row=4, column=0, sticky=W) 

    return menu 

def sub_menu(root): 
    global subpage 
    subpage = Frame(root) 
    button5 = Button(subpage, text="Save Generation Data", 
       command = lambda: save_entries()) 
    button5.grid(row=1, column= 6, sticky=E) 

    button6 = Button(subpage, text="Return To Main Page", 
       command = lambda: switch_page("main")) 
    button6.grid(row=0, column= 6, sticky=W) 

    juveniles_label0 = Label(subpage,text="Juveniles") 
    adults_label1 = Label(subpage,text="Adults") 
    seniles_label2 = Label(subpage,text="Seniles") 
    population_label3 = Label(subpage,text="Population (Thousands)") 
    survival_rate_label4 = Label(subpage,text="Survival Rate (Between 0 and 1)") 
    birth_rate_label5 = Label(subpage,text="Birth Rate") 
    number_of_gens_label6 = Label(subpage,text="Number of Generations") 

    global entry0 
    entry0 = Entry(subpage) 
    global entry1 
    entry1 = Entry(subpage) 
    global entry2 
    entry2 = Entry(subpage) 
    global entry3 
    entry3 = Entry(subpage) 
    global entry4 
    entry4 = Entry(subpage) 
    global entry5 
    entry5 = Entry(subpage) 
    global entry6 
    entry6 = Entry(subpage) 
    global entry7 
    entry7 = Entry(subpage) 


    juveniles_label0.grid(row=0, column=1) 
    adults_label1.grid(row=0, column=2) 
    seniles_label2.grid(row=0, column=3) 
    population_label3.grid(row=1, column=0) 
    survival_rate_label4.grid(row=2, column=0) 
    birth_rate_label5.grid(row=3, column=0) 
    number_of_gens_label6.grid(row=3, column=2) 

    entry0.grid(row=1, column=1) 
    entry1.grid(row=1, column=2) 
    entry2.grid(row=1, column=3) 
    entry3.grid(row=2, column=1) 
    entry4.grid(row=2, column=2) 
    entry5.grid(row=2, column=3) 
    entry6.grid(row=3, column=2) 
    entry7.grid(row=3, column=3) 



    return subpage 
def display_values(root): 
    sub2 = Frame(root) 
    label0 = Label(sub2, text = "") 
    label1 = Label(sub2, text="") 

    button7 = Button(sub2, text="Return To Main Page", 
       command = lambda: switch_page("main")) 

    label0.grid(row=1, column=1) 
    label1.grid(row=2, column=2) 

    button7.grid(row=1, column=10) 

    return sub2 

def run_model(root): 
    sub3 = Frame(root) 
""" 
newjuveniles = entry_values[1] * entry_values[6] #new juveniles = adults * birthrate 
newseniles = (entry_values[2]*entry_values[5]) + (entry_values[1] * entry_values[4]) #new seniles = adults + survivingseniles 
newadults= entry_values[0] * entry_values[3]#juveniles to adults juveniles * juvenile survibal rate 
""" 
    button8 = Button(sub3, text="Return To Main Page", 
       command = lambda: switch_page("main")) 

    button8.grid(row=1, column=10) 
    return sub3 

def save_entries(): 
    save_page = Frame(root) 
    ln0 = entry0.get 
    entry_values.append(ln0) 
    print entry_values 

    return save_page 


def switch_page(page_name): 
    slaves = root.pack_slaves() 
    if slaves: 

     slaves[0].pack_forget() 
    pages[page_name].pack(fill="both", expand=True) 

root = Tk() 
pages = { 
    "main": main_menu(root), 
    "sub": sub_menu(root), 
    "sub2":display_values(root), 
    "sub3":run_model(root), 

} 

switch_page("main") 
root.mainloop() 

我現在的問題是,我試圖使保存條目工作,不能因爲條目在另一個函數中定義。如果我試圖將它們從函數中取出,那麼它會說子頁面沒有被定義,並且子頁面不能被移出函數(據我所知)並且仍然做它的工作,所以我研究了聲明全局變量,但是我找到的所有東西都是一個例子像這樣如何刪除兩個功能之間的全局變量

myGlobal = 5 
def func1(): 
    myGlobal = 42 

def func2(): 
    print myGlobal 

func1() 
func2() 

其中變量在函數之外,然後他們在具有全局作用域的函數中使用它。

的問題,除了解決傳統知識開放

+0

的第二個實例什麼的兩個函數定義之前聲明? –

+1

如果我沒有遺漏某些東西,在這段代碼中沒有'Entry',並且你說你的問題是關於條目的,所以請創建[MCVE]。 – Lafexlos

+0

另外,當試圖從條目中獲取值時,應該_call_方法_get()_。 'ln0 = entry0.get()'和'seniles_label2'行中有奇怪的'save_page = Frame(root)'。 – Lafexlos

回答

0
myvariable = 5 
def func(): 
    global myvariable 
    myvariable = 6 #changes `myvariable` at the global scope 
    print myvariable #prints 6 

func() 
print myvariable #prints 6 now because we were able 
        #to modify the reference in the function 

檢查this

+0

我只是有一個實現,並重新嘗試它略有不同nd它的作品,但正在創建一個額外的實例tk – 2C00L4U