Python tkinter下一页

Python tkinter下一页,python,tkinter,Python,Tkinter,我想从一页转到另一页。我不知道page[I]是否是一个变量,但这段代码应该在我的逻辑中工作。你能告诉我哪里出了错吗 import tkinter window = tkinter.Tk() def page1(): page2text.pack_forget() page3text.pack_forget() page1text.pack() def page2(): page1text.pack_forget() page2text.pack()

我想从一页转到另一页。我不知道page[I]是否是一个变量,但这段代码应该在我的逻辑中工作。你能告诉我哪里出了错吗

import tkinter
window = tkinter.Tk()
def page1():
    page2text.pack_forget()
    page3text.pack_forget()
    page1text.pack()

def page2():
    page1text.pack_forget()
    page2text.pack()
    page3text.pack_forget()

def page3():
    page1text.pack_forget()
    page2text.pack_forget()
    page3text.pack()
pagelist="123"
i=iter(pagelist)
page="page"
page1btn = tkinter.Button(window, text="Next", command=page+next(i))
page2btn = tkinter.Button(window, text="Exit", command=quit)

page1text = tkinter.Label(window, text="This is page 1")
page2text = tkinter.Label(window, text="This is page 2")
page3text = tkinter.Label(window, text="This is page 3")

page1btn.pack()
page2btn.pack()
page1text.pack()
window.mainloop()

您可以使用字典来保存函数,甚至按钮和标签,然后您可以使用字符串来访问它们

import tkinter as tk

# --- functions ---

def page1():
    labels["1"].pack()
    labels["2"].pack_forget()
    labels["3"].pack_forget()

def page2():
    labels["1"].pack_forget()
    labels["2"].pack()
    labels["3"].pack_forget()

def page3():
    labels["1"].pack_forget()
    labels["2"].pack_forget()
    labels["3"].pack()

# --- main ---

window = tk.Tk()

func = {
    "1": page1,
    "2": page2,
    "3": page3,
}

buttons = {
    "1": tk.Button(window, text="Page 1", command=func["1"]),
    "2": tk.Button(window, text="Page 2", command=func["2"]),
    "3": tk.Button(window, text="Page 3", command=func["3"]),
}

labels = {
    "1": tk.Label(window, text="This is page 1"),
    "2": tk.Label(window, text="This is page 2"),
    "3": tk.Label(window, text="This is page 3"),
}    

buttons["1"].pack()
buttons["2"].pack()
buttons["3"].pack()

labels["1"].pack()

window.mainloop()
您甚至可以为此使用
for
-loop

buttons = {}
labels = {}

for x in range(1, 4):
    buttons[str(x)] = tk.Button(window, text="Page "+str(x), command=func[str(x)])
    labels[str(x)] = tk.Label(window, text="This is page "+str(x))

编辑:页面上只显示一个按钮的代码

import tkinter as tk

# --- functions ---

def page1():
    buttons["1"].pack_forget()    
    buttons["2"].pack()
    buttons["3"].pack_forget()

    labels["1"].pack()
    labels["2"].pack_forget()
    labels["3"].pack_forget()

def page2():
    buttons["1"].pack_forget()    
    buttons["2"].pack_forget()
    buttons["3"].pack()

    labels["1"].pack_forget()
    labels["2"].pack()
    labels["3"].pack_forget()

def page3():
    buttons["1"].pack()    
    buttons["2"].pack_forget()
    buttons["3"].pack_forget()

    labels["1"].pack_forget()
    labels["2"].pack_forget()
    labels["3"].pack()

# --- main ---

window = tk.Tk()

func = {
    "1": page1,
    "2": page2,
    "3": page3,
}

buttons = {
    "1": tk.Button(window, text="Next (Page 1)", command=func["1"]),
    "2": tk.Button(window, text="Next (Page 2)", command=func["2"]),
    "3": tk.Button(window, text="Next (Page 3)", command=func["3"]),
}

labels = {
    "1": tk.Label(window, text="This is page 1"),
    "2": tk.Label(window, text="This is page 2"),
    "3": tk.Label(window, text="This is page 3"),
}    

buttons["2"].pack()
labels["1"].pack()

window.mainloop()

您当前的错误是什么?下一步按钮不起作用。我不知道“下一步按钮不工作”错误:这是无效的:
command=page+next(i)
,您不能从
str
command=
构建
命令=
需要没有
()
和参数的函数名-它被称为“回调”-因此它以后可以使用
()
运行它。使用字符串“page”无法创建函数。直接使用name
page1
或将函数保留在字典中,然后您可以使用string获得函数-
func[“page1”]=page1
command=func[“page1”]
。顺便说一句:要创建3个按钮,您需要
来进行循环。仅使用
next()
无法创建3个按钮。谢谢,但这不是我想要的。要在上一个表单中执行下一个操作。2个按钮。总共3页。默认页面下一页等。像设置一样思考。您希望将功能分配给按钮,此解决方案显示:)最好使用
Frame
对元素进行分组,然后可以显示和隐藏
Frame
,而不是单独显示和隐藏每个元素。在许多问题中,您甚至可以看到类
Page
的示例,该类使用框架来解决此问题,但类
Page
不是标准元素。它是在Stackoverflow的某个问题中创建的。如果您在开始时仅显示第一个按钮,并在函数中使用
按钮[…]。pack()
,则您可以得到所需的。顺便说一句,在这个简单的示例中,您甚至可以只创建一个按钮和一个标签,然后更改标签和按钮上的文本,并为按钮指定不同的功能<代码>标签[“文本”]=“新文本”
按钮[“文本”]=“新文本”
按钮[“命令”]=新功能