我有一个按照这样的元组排序的字符串列表:
values = ('1.Python','2.Ruby','3.PHP','4.Perl','5.JavaScript')
我的简单代码是:
from tkinter import *
root = Tk()
values = ('1.Python','2.Ruby','3.PHP','4.Perl','5.JavaScript')
ru = Button(root,
text="Next",
)
ru.grid(column=0,row=0)
lab = Label(root,
text=values[0])
lab.grid(column=1,row=0)
ru2 = Button(root,
text="Previous"
)
ru2.grid(column=2,row=0)
root.mainloop()
我有两个tkinter按钮“next”和“previous”,Label的text
值直接取自元组(text=value[0]
),但我想知道如何显示当按下下一个按钮时,来自元组的下一个字符串,以及当按下“上一个”按钮时如何将其更改为先前的值。我知道它可以使用for循环完成,但我无法弄清楚如何实现它。我是python的新手。
答案 0 :(得分:2)
使用Button(..., command=callback)
分配将更改标签lab["text"] = "new text"
callback
表示没有()
您必须在global
内使用function
通知函数将current += 1
分配给外部变量,而不是搜索本地变量。
import tkinter as tk
# --- functions ---
def set_next():
global current
if current < len(values)-1:
current += 1
lab["text"] = values[current]
def set_prev():
global current
if current > 0:
current -= 1
lab["text"] = values[current]
# --- main ---
values = ('1.Python','2.Ruby','3.PHP','4.Perl','5.JavaScript')
current = 0
root = tk.Tk()
ru = tk.Button(root, text="Next", command=set_next)
ru.grid(column=0, row=0)
lab = tk.Label(root, text=values[current])
lab.grid(column=1, row=0)
ru2 = tk.Button(root, text="Previous", command=set_prev)
ru2.grid(column=2, row=0)
root.mainloop()
BTW:如果Next
必须在最后一个之后显示第一个元素
def set_next():
global current
current = (current + 1) % len(values)
lab["text"] = values[current]
def set_prev():
global current
current = (current - 1) % len(values)
lab["text"] = values[current]