【问题标题】:TKinter Change Label with "Next" ButtonTKinter 使用“下一步”按钮更改标签
【发布时间】:2014-01-31 02:32:33
【问题描述】:

该程序旨在一次复习一组句子。我想显示一个,然后当单击“下一步”按钮时,它会显示下一个输入。现在它通过他们爆炸。我如何让它停止?我有一种感觉,我错过了一些小东西。 代码如下:

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()

【问题讨论】:

    标签: python button tkinter


    【解决方案1】:

    要更改标签中显示的内容,您可以调用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)
    

    【讨论】:

    • 不确定我是否关注。我得到一个标签,我得到改变标签,它只是不等待按钮。对此有何建议?
    • 不,你没有得到一个标签。您为文件中的每一行创建一个新行,因为您是在循环中创建它。就像我写的那样,您需要创建一个函数来更新标签,并在每次单击按钮时调用该函数。
    【解决方案2】:

    这是我最终用来解决问题的代码:

    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()
    

    【讨论】:

      猜你喜欢
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多