在Python中是一个非常新的东西,我现在有一个问题,问题是试图通过for循环为列表中的每个项目创建一个小部件Notebook,但是问题是我无法为每个小部件分配名称,我需要小部件名称以在每个Notebook小部件中放置不同的小部件。
正如我所说的,我是python的菜鸟,我认为下面的代码很烂:),所以谢谢您的帮助。
from tkinter import ttk
note = ttk.Notebook()
list=["tab1","tab2"]
def show_parent_name():
name= button2.winfo_parent()
print(name)
for i in (list):
name_tab=i
tab = ttk.Frame(note, name=name_tab) #-----name define the widget
note.add(tab, text=nombre_tab) # ---text define the tab name
note.pack()
global button2
button2 = Button(tab, text="print parent name",command=show_parent_name)
button2.grid(row=0, column=0, sticky=W)
note.mainloop()
答案 0 :(得分:0)
几件事:list
是一个内置函数。如果将list
用作变量名,则该函数将不再可用。
我也正在导入tkinter,因为使用了来自tkinter的对象和常量。
我正在使用lambda
编写按钮回调,该回调使我可以将选项卡名称作为参数传递给show_parent_name
函数。那我也不需要全局变量。
我重写了循环变量的用法,因为它比必需的更为复杂。
如果您未明确创建窗口根目录(Tk()
,Tkinter会自动创建该窗口根目录。但是,如果您打算对窗口进行任何操作,除了包含“笔记本”之外,还应该显式创建它。
尝试以下代码,看看它是否可以按照您想要的方式工作:
from tkinter import *
from tkinter import ttk
note = ttk.Notebook()
alist = ["tab1","tab2"]
def show_parent_name(name):
print(name)
for name_tab in alist:
tab = ttk.Frame(note, name=name_tab) #-----name define the widget
note.add(tab, text=name_tab) # ---text define the tab name
note.pack()
button2 = Button(tab, text="print parent name",
command=lambda name_tab=name_tab: show_parent_name(name_tab))
button2.grid(row=0, column=0, sticky=W)
note.mainloop()