Python tkinter下一页
我想从一页转到另一页。我不知道page[I]是否是一个变量,但这段代码应该在我的逻辑中工作。你能告诉我哪里出了错吗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()
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”无法创建函数。直接使用namepage1
或将函数保留在字典中,然后您可以使用string获得函数-func[“page1”]=page1
和command=func[“page1”]
。顺便说一句:要创建3个按钮,您需要来进行循环。仅使用next()
无法创建3个按钮。谢谢,但这不是我想要的。要在上一个表单中执行下一个操作。2个按钮。总共3页。默认页面下一页等。像设置一样思考。您希望将功能分配给按钮,此解决方案显示:)最好使用Frame
对元素进行分组,然后可以显示和隐藏Frame
,而不是单独显示和隐藏每个元素。在许多问题中,您甚至可以看到类Page
的示例,该类使用框架来解决此问题,但类Page
不是标准元素。它是在Stackoverflow的某个问题中创建的。如果您在开始时仅显示第一个按钮,并在函数中使用按钮[…]。pack()
,则您可以得到所需的。顺便说一句,在这个简单的示例中,您甚至可以只创建一个按钮和一个标签,然后更改标签和按钮上的文本,并为按钮指定不同的功能<代码>标签[“文本”]=“新文本”
,按钮[“文本”]=“新文本”
,按钮[“命令”]=新功能
。