在Tkinter Python中将treeview数据从一个窗口传递到另一个窗口
大家好! 这里的问题是,当我想将数据从一个窗口的树视图传递到另一个窗口的树视图时,会出现问题,因为第二个树视图的选定行在第一个树视图的所有行中重复。 另一个问题是,如何在现有行中插入,例如,从索引为5的列开始 我的两项职能:在Tkinter Python中将treeview数据从一个窗口传递到另一个窗口,python,tkinter,Python,Tkinter,大家好! 这里的问题是,当我想将数据从一个窗口的树视图传递到另一个窗口的树视图时,会出现问题,因为第二个树视图的选定行在第一个树视图的所有行中重复。 另一个问题是,如何在现有行中插入,例如,从索引为5的列开始 我的两项职能: def createTable(): idAuthor = inputId.get() result_object = get_publisher(idAuthor) author=result_object['author'] docume
def createTable():
idAuthor = inputId.get()
result_object = get_publisher(idAuthor)
author=result_object['author']
documents=result_object['documents']
nameAuthor=author.name;
numberDocuments=author.number_documents
numberCitations=author.citations
hIndex=author.h_index
organization=author.organization
root = Tk()
root.geometry("1200x600+20+20")
#root.resizable(False,False)
root.title(author.name)
frame8=Frame(master=root,width=1100,height=175,bg='blue')
frame8.place(x=50,y=0)
authorName_label=Label(master=frame8,text="Full name : " + nameAuthor,bg='blue',fg='white',font=(None,14)).place(x=60,y=20)
numberDocuments_label=Label(master=frame8,text="Number of documents : " + numberDocuments,bg='blue',fg='white',font=(None,14)).place(x=600,y=20)
numberCitations_label=Label(master=frame8,text="Number of citations : " +numberCitations,bg='blue',fg='white',font=(None,14)).place(x=60,y=60)
hindex_label=Label(master=frame8,text="H-index : "+hIndex,bg='blue',fg='white',font=(None,14)).place(x=600,y=60)
organization_label=Label(master=frame8,text="Organization : " +organization,bg='blue',fg='white',font=(None,14)).place(x=60,y=120)
tv=ttk.Treeview(root,columns=(1,2,3,4,5,6,7,8,9),show="headings",height="12")
tv.place(x=85,y=200)
tv.heading(1,text="Type")
tv.column(1, minwidth=0, width=100, stretch=NO)
tv.heading(2,text="Title")
tv.column(2, minwidth=0, width=150, stretch=NO)
tv.heading(3,text="Authors")
tv.column(3, minwidth=0, width=150, stretch=NO)
tv.heading(4,text="Magazine")
tv.column(4, minwidth=0, width=150, stretch=NO)
tv.heading(5,text="Date")
tv.column(5, minwidth=0, width=150, stretch=NO)
tv.heading(6,text="h_index")
tv.column(6, minwidth=0, width=70, stretch=NO)
tv.heading(7,text="Sjr")
tv.column(7, minwidth=0, width=70, stretch=NO)
tv.heading(8,text="Ranking")
tv.column(8, minwidth=0, width=70, stretch=NO)
tv.heading(9,text="Impact Factor")
tv.column(9, minwidth=0, width=70, stretch=NO)
for i in documents:
tv.insert(parent='',index='end',values=(i.type,i.title,i.authors,i.magazine,i.date))
def selectItem():
curItem = tv.focus()
valeursGeneral = tv.item(curItem)
documentValues = valeursGeneral['values']
magazine = documentValues[3]
journals=get_journals(magazine)
afficherJournal(journals,documentValues)
def clickBtnExportData():
for i in documents:
exportData(i.type,i.title,i.authors,i.magazine,i.date,nameAuthor,numberDocuments,numberCitations,hIndex,organization)
# inputId.delete(0,END)
btn_export=Button(master=root,text="Export",bg='#0cb071',activebackground="green",fg='white',height=1,width=12,font=('Pangram',16),command=lambda:clickBtnExportData())
btn_export.place(x=400,y=475)
btn_journalSearch=Button(master=root,text="Search Journal",bg='#0cb071',activebackground="green",fg='white',height=1,width=12,font=('Pangram',16),command=lambda:selectItem())
btn_journalSearch.place(x=600,y=475)
第二个窗口:
def afficherJournal(journal,documents):
journalWindow = Tk()
journalWindow.geometry("1200x600+20+20")
frame9=Frame(master=journalWindow,width=800,height=75,bg='blue')
frame9.place(x=200,y=0)
journal_label=Label(master=frame9,text="Liste des journaux : ",bg='blue',fg='white',font=(None,18))
journal_label.place(x=300,y=25)
tv_journal=ttk.Treeview(journalWindow,columns=(1,2,3,4,5),show="headings",height="12")
tv_journal.place(x=250,y=200)
tv_journal.heading(1,text="Name")
tv_journal.column(1, minwidth=0, width=300, stretch=NO)
tv_journal.heading(2,text="h_index")
tv_journal.column(2, minwidth=0, width=120, stretch=NO)
tv_journal.heading(3,text="Sjr")
tv_journal.column(3, minwidth=0, width=120, stretch=NO)
tv_journal.heading(4,text="Ranking")
tv_journal.column(4, minwidth=0, width=120, stretch=NO)
tv_journal.heading(5,text="Impact factor")
tv_journal.column(5, minwidth=0, width=120, stretch=NO)
for i in journal:
tv_journal.insert(parent='',index='end',values=(i.name,i.h_index,i.sjr,i.ranking,i.impact_factor))
btn_ok=Button(master=journalWindow,text="OK",bg='#0cb071',activebackground="green",fg='white',height=1,width=12,font=('Pangram',16),command=lambda:selectItemJournal())
btn_ok.place(x=500,y=500)
def selectItemJournal():
curItem = tv_journal.focus()
valeursGeneral = tv_journal.item(curItem)
journalValues = valeursGeneral['values']
# magazine=journalValues[0]
h_index = journalValues[1]
sjr = journalValues[2]
ranking = journalValues[3]
impact_factor = journalValues[4]
你能给我们举一个最简单的例子说明你的问题吗?我们不想调试那么多代码。是的,当然,主要问题是:我想要一种方法将一行中的许多列传递给不同树视图中的一行。我希望你能理解。如果你有很多变量/函数/小部件,我建议你尝试使用一个类,也许这可以帮助你。谢谢那么,没有办法用函数来实现这一点吗?@ZiyadElabid任何你可以用类来实现的事情都可以用函数来实现,但是类可以使你的代码更整洁,更容易调试。