请原谅我对问题的编码/描述不佳。我是编程新手,这是我的第一个问题!无论如何,我正在使用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机器。
无论如何,如果您走了这么远,非常感谢您阅读本文!再次,我是这一切的新手,因此,您能给我的任何帮助将非常感激!
.get()
将返回选项菜单中的所有内容。如果您输入到选项菜单中的值包含不希望的字符,那么您获得的值也将变为。
数据库调用将返回列表(列)的列表(行),看起来您似乎没有考虑到这一点。