Optionmenu中的[Variable.get()不返回我查询MySQL所需的内容

问题描述 投票:0回答:1

请原谅我对问题的编码/描述不佳。我是编程新手,这是我的第一个问题!无论如何,我正在使用tkinter构建一个简单的清单系统,同时将mySQL用作数据库。目前,我正在开发一项功能,该功能允许用户使用Optionmenu选择一个部门,然后获取该部门中的所有项目。我在一个表中列出了项目,而在另一表中列出了部门,并使用外键将项目表连接到部门表中的主键(department_string)。

我的目标是让mySQL提供部门列表,然后让Optionmenu使用该列表作为选项。然后,我需要使用Option菜单中选择的部门查询数据库,以查找该部门中的所有项目。我的问题是,Optionmenu中的variable.get()返回在我第一次查询数据库时首先收到的括号和逗号。这使得它无法直接将variable.get()输入到游标中的字符串中。这是代码:

        department_cursor.execute("SELECT department_string FROM departments")
        department_list = department_cursor.fetchall()

        variable = StringVar(search_window)
        variable.set(department_list[0])
        user_entry = OptionMenu(search_window, variable, *department_list)

        ***

        cursor_b.execute("SELECT item WHERE department_string = " + "'" + str(variable.get()) + "'")

我相信问题在于,variable.get()提供了特殊字符,例如括号和逗号,这些字符来自原始mySQL查询。例如,如果部门是HR,Warehouse,R&D,则mySQL返回[('HR',),('Warehouse',),('R&D',)],然后将其输入到Option菜单,然后再进行variable.get( )吐出类似('HR',)之类的内容,因此mySQL无法识别。

到目前为止,我唯一想到的就是使用for循环删除Optionmenu返回的所有特殊字符,或者硬编码每个部门的字符串。两者似乎都不是很理想,尽管我对编程还很陌生,但我觉得它有点像rube goldberg机器。

无论如何,如果您走了这么远,非常感谢您阅读本文!再次,我是这一切的新手,因此,您能给我的任何帮助将非常感激!

mysql python-3.x tkinter optionmenu
1个回答
0
投票

.get()将返回选项菜单中的所有内容。如果您输入到选项菜单中的值包含不希望的字符,那么您获得的值也将变为。

数据库调用将返回列表(列)的列表(行),看起来您似乎没有考虑到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.