使用元组点击tkinter

时间:2017-12-13 13:56:17

标签: python tkinter

我有一个按照这样的元组排序的字符串列表:

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的新手。

1 个答案:

答案 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]