2014-01-31 106 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

不,你没有得到一个标签。您为文件中的每一行创建一个新的文件,因为您正在循环内创建它。就像我写的,你需要创建一个函数来更新标签,并且每次单击按钮时调用该函数。 –