Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python json编辑器,如何删除选项卡并在选项卡tkinter中添加标签/条目_Python_Json_Tkinter - Fatal编程技术网

Python json编辑器,如何删除选项卡并在选项卡tkinter中添加标签/条目

Python json编辑器,如何删除选项卡并在选项卡tkinter中添加标签/条目,python,json,tkinter,Python,Json,Tkinter,我有这个程序,使标签,我想为每个标签标签和条目 使用for循环还是什么 from tkinter import * import json from tkinter.filedialog import asksaveasfile import time from tkinter import ttk import math import sys root = Tk() root.geometry('1000x1200') root.title('Json Editor') root.count

我有这个程序,使标签,我想为每个标签标签和条目 使用for循环还是什么

from tkinter import *
import json
from tkinter.filedialog import asksaveasfile
import time
from tkinter import ttk
import math
import sys

root = Tk()
root.geometry('1000x1200')
root.title('Json Editor')
root.counter = 0
root.uncounter = -1
tabcontrol=ttk.Notebook(root, width=800, height=800)

NewWorkLab=Label(root,text="Name: ")
NewWorkLab.grid(row=0,column=0,sticky="W")

NewWorkEntry=Entry(root)
NewWorkEntry.grid(row=0,column=1,sticky="W")



def AddNewWork():
    root.counter +=1
    print(root.counter)
    TabName=ttk.Frame(tabcontrol)
    tabcontrol.add(TabName,text=NewWorkEntry.get())

    TabName.ttk.Label(TabName,  text ="Welcomes").grid(column = 0,  
                               row = 0, 
                               padx = 30, 
                               pady = 30)  
    TabName.tabcontrol.ttk.Entry(TabName,  text ="this label is wrong").grid(column = 1, 
                                    row = 0,  
                                    padx = 30, 
                                    pady = 30) 



def deletetab():
    tabcontrol.forget(tabcontrol.select())
 #   tabcontrol.destroy(TabName, root.counter)



AddWorkButton=Button(root,text=' Add ', command=AddNewWork)
AddWorkButton.grid(row=0,column=2, sticky="W")


RemWorkTab=Button(root,text=' Rem ', command=deletetab)
RemWorkTab.grid(row=0,column=3, sticky="W")
tabcontrol.grid(row=1,column=0,columnspan=2,padx=5)

root.mainloop()

最后是我的问题

  • 如何在我用第二个程序创建的选项卡中显示标签和条目之类的内容
有人帮忙会很好谢谢

如何在我用第二个程序创建的选项卡中显示标签和条目之类的内容

您需要在列表或字典中存储对选项卡的引用。然后可以使用列表索引将小部件添加到选项卡中。例如,要将标签添加到选项卡
i
,您可以执行以下操作:

tablist = []
def AddNewWork():
    tab=ttk.Frame(tasktabs)
    tasktabs.add(tab,text=NewWorkEntry.get())
    tablist.append(tab)
...
i =   # whatever tab number you want to modify
tab = tablist[i]
tab.button = Button(tab, text="Click me!")
tab.label = Label(tab, text="I'm a label")
i =   # whatever tab number you want to modify
tab = tablist.pop(i)
tab.destroy()
如何删除用按钮创建的选项卡??在第三个程序中没有固定数量的选项卡

同样的技术也适用:对列表中的元素调用
destroy
方法。您还应该从列表中删除该项。例如,假设您要删除tab
i
,您可以执行以下操作:

tablist = []
def AddNewWork():
    tab=ttk.Frame(tasktabs)
    tasktabs.add(tab,text=NewWorkEntry.get())
    tablist.append(tab)
...
i =   # whatever tab number you want to modify
tab = tablist[i]
tab.button = Button(tab, text="Click me!")
tab.label = Label(tab, text="I'm a label")
i =   # whatever tab number you want to modify
tab = tablist.pop(i)
tab.destroy()

有人回答并删除了答案这是一个很好的答案,我无法收回你发布的代码太多了。请试着专注于一个问题,并发布绝对最少的代码量来说明您遇到的问题。例如,如果您正在为如何从一个小部件中获取数据而苦苦挣扎,那么我们不需要17个输入小部件。如果你正在努力动态创建标签,那么这些标签不需要17个条目控件,等等。我提出两点,我想把重点放在第二点上,因为这也会回答第一点(因为代码重复),即使我必须重写所有内容,请尝试重写问题并为问题创建一个新的。修改并使其简单化---我如何标记创建的选项卡,并在能够删除它后给选项卡一种标记?现在我如何在选项卡内创建标签???@ayucaba:与我演示的创建标签的方式完全相同button.tablist=[i]NameError时出错:名称“i”不是defined@ayucaba:嗯,是的。你必须告诉它你想把项目添加到哪一个。请举一个更好的例子