2014-01-31 108 views
0

該程序旨在一次檢查一組句子。我想顯示一個,然後點擊「下一個」按鈕時,它會顯示下一個輸入。現在它通過它們爆炸。我如何讓它停止?我有一種感覺,我錯過了一些小事。 因此,這裏的代碼:TKinter使用「Next」按鈕更改標籤

from Tkinter import * 
import ttk 

root = Tk() 

def iterate(number): 
    return number + 1 

inputs = open("inputs.txt").readlines 
lines = inputs() 
numlines = len(lines) 
x=0 
for tq in lines: 
    sentence = lines[x].strip('\n') 
    sen = StringVar() 
    sen.set(sentence) 
    x = iterate(x) 
    ttk.Label(textvariable = sen).grid(column=1, row=1, columnspan=99) 
    ttk.Button(text = "next", command = x).grid(column=99, row=5, pady=5) 
    root.update() 
root.mainloop() 

回答

0

這是我最後用來解決問題的代碼:

from Tkinter import * 
import ttk 

root = Tk() 
root.title("This space intentionally left blank") 
root.minsize(800,200) 
mainframe = ttk.Frame(root) 
mainframe.grid(column = 0, row = 0) 

def nextInputs(*args):  
    sen.set(inputs()) 

inputs = open("inputs.txt").readline 
sen = StringVar() 
ttk.Label(mainframe, textvariable=sen).grid(column=1, row=1, columnspan=99) 
Button = ttk.Button(mainframe, text = "next", command = nextInputs).grid(column=99, row=5, pady=5) 
root.bind('<Return>', nextInputs) 
root.mainloop() 
0

要改變什麼顯示在一個標籤,你可以調用configure方法,給它任何當你創建你給同一個論點。所以,你會創建一個標籤,然後調用這個方法來修改顯示的內容。

的基本邏輯是這樣的:

def do_next(): 
    s = get_next_string_to_display() 
    the_label.configure(text=s) 

the_label = ttk.Label(...) 
the_button = ttk.Button(..., command=do_next) 
+0

不知道我跟隨。我得到一個標籤,我得到的標籤改變,它只是不等待按鈕。對此有何建議? – boristhescot

+0

不,你沒有得到一個標籤。您爲文件中的每一行創建一個新的文件,因爲您正在循環內創建它。就像我寫的,你需要創建一個函數來更新標籤,並且每次單擊按鈕時調用該函數。 –