Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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 在tkinter的treeview中选择多行并同时获取它们_Python_Tkinter_Treeview_Pymysql - Fatal编程技术网

Python 在tkinter的treeview中选择多行并同时获取它们

Python 在tkinter的treeview中选择多行并同时获取它们,python,tkinter,treeview,pymysql,Python,Tkinter,Treeview,Pymysql,如何在树视图中选择多行,其中树视图正在从MySQL数据库中提取数据,以便在文本框中显示它们。我可以一次为一行执行此操作,但不确定如何选择多个条目。我的GUI中基本上有两个框架,左框架和右框架。左框显示带有动物名称的树视图,右框显示文本框。当有人选择动物名称并点击“添加”按钮时,应将其添加到右侧文本框中。我只是想弄清楚如何对多个选项执行此操作。下面是到目前为止我的代码 从tkinter进口* 从tkinter导入ttk 导入pymysql 类动物应用程序: 定义初始自我,根: self.root=

如何在树视图中选择多行,其中树视图正在从MySQL数据库中提取数据,以便在文本框中显示它们。我可以一次为一行执行此操作,但不确定如何选择多个条目。我的GUI中基本上有两个框架,左框架和右框架。左框显示带有动物名称的树视图,右框显示文本框。当有人选择动物名称并点击“添加”按钮时,应将其添加到右侧文本框中。我只是想弄清楚如何对多个选项执行此操作。下面是到目前为止我的代码

从tkinter进口* 从tkinter导入ttk 导入pymysql 类动物应用程序: 定义初始自我,根: self.root=根 self.root.titleAnimals 自根几何1350x750+0+0 self.root.resizeableFalse,FALSE title=Labelself.root,text=Animals,font=times new roman,30,粗体,bg=262626, fg=白色。placex=0,y=0,relwidth=1 self.root.configbackground=粉蓝色 ====变量======== self.animal_var=StringVar ==用于在右侧文本框中显示添加的动物名称 def显示单元名称: txt_box.insertEND,'Animal:'+self.Animal_var.get+'\n' ==========第1帧左帧=========== 顶部框架=Frameself.root,bd=5,浮雕=RIDGE,背景=white 顶部框架。放置X=10,y=50,宽度=750,高度=620 Addbtn=ButtonTop\u框,padx=16,pady=1,bd=7,fg='black',font='arial',16',bold',width=4, text='Add',bg='powder blue',command=display\u name.gridrow=0,column=0 表_Frame=Frameself.root,bd=5,浮雕=RIDGE,bg=white 表_框架位置X=10,y=130,宽度=750,高度=620 scroll\u x=可滚动的\u帧,方向=水平 滚动y=可滚动框架,方向=垂直 self.Animals\u table=ttk.TreeviewTable\u Frame, 列=动物, xscrollcommand=scroll_x.set,yscrollcommand=scroll_y.set 滚动_x.packside=BOTTOM,fill=x 滚动y.packside=RIGHT,fill=y 滚动\u x.configcommand=self.Animals\u table.xview 滚动y.configcommand=self.Animals\u table.yview self.Animals\u table.headinganimal,text=动物名称 self.Animals_表['show']=“标题” self.Animals\u table.columnanimal,宽度=100 self.Animals\u table.packfill=BOTH,expand=1 self.Animals\u table.bind,self.get\u光标 self.fetch\u数据 =============第2帧右帧=========== Txt_Frame=Frameself.root,bd=5,relief=RIDGE,bg=white Txt_Frame.placex=770,y=70,宽度=580,高度=620 scroll_y=ScrollBarText_帧,方向=垂直 滚动y.packfill=y,side=RIGHT 文本框=文本文本框,字体=泰晤士报新罗马,15,背景=浅黄色,前景=黑色, YSCROLLCOMAND=滚动y.set txt_box.packfill=两者,expand=1 滚动y.configcommand=txt\u box.yview txt_box.insertEND,'动物:'+'\n' def fetch_数据自身: con=pymysql.connecthost=localhost,user=root,password=,database=animaltree cur=con.cursor cur.executeselect*来自动物 行=cur.fetchall 行=[牛、鹿、狗、斑马] 如果伦罗!=0: self.Animals\u table.删除*self.Animals\u table.get\u子项 对于行中的行: self.Animals\u table.insert,END,values=行 犯 结束 def get_光标自身,ev: 光标\u行=self.Animals\u table.focus 内容=self.Animals\u table.itemcursor\u行 行=内容[“值”] self.animal_var.setrow[0] 根=Tk obj=动物批准 root.mainloop
Treeview的默认选择模式已处于多模式。您需要使用.selection而不是.focus来获取所选项目

为了保存选择,将self.animal\u var从StringVar更改为Variable,并更新display\u name和self.get\u光标,如下所示:

类动物应用程序: 定义初始自我,根: ... self.animal_var=变量已从StringVar更改 def显示单元名称: txt_box.insertEND,'Animal:'+','.joinself.Animal_var.get+'\n' ... def get_光标自身,ev: self.animal_var.set[ev.widget.itemidx['values'][0]用于ev.widget.selection中的idx]
您的意思是要从treeview中选择多个项目?@CoolCloud是的,正确。使用selectmode='multiple'?作为treeview的一个选项。treeview的默认选择模式已处于多个模式。您需要使用.selection而不是.focus来获取所选项目。@acw1668谢谢您的回答。另一个问题是,在这种情况下,存储多个变量的最佳方式是什么。对于单选,我就是这么做的:self.animal_var.setrow[0]