首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MySql输入中删除{}

问从MySql输入中删除{}
EN

Stack Overflow用户
提问于 2020-06-09 00:04:11
回答 2查看 78关注 0票数 0

我正在使用MySql存储过程get_list填充ttk.Combobox

代码语言:javascript
复制
my_number = tk.StringVar()
cb=ttk.Combobox(top_frame,width=25,textvariable=my_number)
cb['values']=db.get_list()
cb.grid(row=1,column=4)

它工作得很好,除了结果由{}括起来。

结果:{Smith, John}

我想要的:Smith, John

如何去掉开头和结尾的{}

EN

回答 2

Stack Overflow用户

发布于 2020-06-09 04:30:26

问题是数据库查询返回一个行列表,其中每一行都是一个只有一列的列表。values选项需要一个字符串列表。

因此,简单的解决方案是使用列表理解将每行转换为字符串。像这样的东西应该是有效的:

代码语言:javascript
复制
values = [row[0] for row in db.get_list()]
cb['values'] = values

因为我不能运行你的代码,所以我不能肯定。无论如何,问题的根源在于您传递的是一个列表(或元组)列表,而tkinter需要一个字符串列表。

因为tkinter在内部对列表使用了大括号,所以它添加了大括号来保留您传递的数据的性质。您可以将从db.get_list()返回的数据转换为字符串列表。

票数 0
EN

Stack Overflow用户

发布于 2020-06-10 02:16:14

Bryan,我插入了你建议的两行代码,但我仍然得到由{}包围的值。许多我不理解,但我相信,永远不会确切知道,MySql过程返回的是一个字符串。下面是MySQL代码:

代码语言:javascript
复制
CREATE DEFINER=`root`@`localhost` PROCEDURE `get_list`()
BEGIN
    SELECT concat(last_name,', ', first_name) as last_first
      FROM volunteers
    ORDER BY
      last_first;
END


my_number = tk.StringVar()
cb = ttk.Combobox(top_frame, width=25, textvariable=my_number)
values = [row[0] for row in db.get_list()]
cb['values'] = db.get_list()
cb.grid(row=1, column=4)

感谢您的坚持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62266340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档