【问题标题】:How to get an input from the user and execute the input as a python code(sql) in tkinter?如何从用户那里获取输入并在 tkinter 中将输入作为 python 代码(sql)执行?
【发布时间】:2020-12-15 21:01:13
【问题描述】:

我搜索了这个,但问题很多,但仍然无法弄清楚。 我会尽量保持简单。

我有这段代码,它基本上是一个文本框和提交按钮,用户将在文本框中编写一个 python 代码(代码是在 sqlite3 中更改或更改某个表或数据库),然后点击提交应该执行用户编写的代码。

用户将在文本框中编写的代码示例:

insert into employee(id,first_name,last_name,password)
values (456,'test','tesst','testpass')

我将向您展示我目前拥有的代码:

        admin_window = tk.Toplevel(root)
        admin_window.title('Admin Window')
        admin_window.geometry("450x450")
        sql_commands = tk.Text(admin_window)
        sql_commands.place(height=350, width=350,relx=0.5, rely=0.5, anchor='center')
        submit_button = tk.Button(admin_window, text=' Submit ', command=submit_click)
        submit_button.place(anchor='center',y=200,relx=0.5, rely=0.5,)

如您所见,有一个文本框(文本框在新窗口中,不在根目录中)

当用户按下提交时,我可以从他那里获得输入:

input = sql_commands.get("1.0",'end')

它正确返回输入,但类型很奇怪,类型是一堆数字,最后是str。

如何获取输入来执行它并将其视为代码?这甚至是正确的方法吗?

【问题讨论】:

  • 使用函数exec(YOUR_TEXT_CODE_HERE) 来执行你获得的文本作为代码。更多信息请参考this
  • @AST python将如何执行SQL代码?
  • @Cloud Cool 好吧,我同意你的看法,但我假设他们会将其添加到包含其余代码的更大字符串中,OP 询问“我如何获取输入来执行它并把它当作密码?”他们没有告诉会直接执行它。
  • OP应该做的是import sqlite并用它来创建一个游标然后为你执行语句。

标签: python tkinter


【解决方案1】:

这对我有用:

import tkinter as tk


def submit_click():
    exec(sql_commands.get("1.0", 'end'))


root = tk.Tk()

admin_window = tk.Toplevel(root)
admin_window.title('Admin Window')
admin_window.geometry("450x450")
sql_commands = tk.Text(admin_window)
sql_commands.place(height=350, width=350, relx=0.5, rely=0.5, anchor='center')
submit_button = tk.Button(admin_window, text=' Submit ', command=submit_click)
submit_button.place(anchor='center', y=200, relx=0.5, rely=0.5,)

root.mainloop()

我的类型看起来很正常,只是一个字符串。但是,您不应该使用“输入”,因为这是 python 中的内置函数。

exec() 函数也是一个内置函数,它将字符串作为 python 代码执行。 exec here的简短指南

【讨论】:

  • @AbdulrahmanAl-Sallum 我不明白,用户将如何使用exec() 执行 SQL 命令?用户也可以import os,然后甚至从那里关闭电脑。
  • 他想执行用户给的python代码,我没用过sql,但我觉得用python代码和数据库交互不会太难
  • 至于导入操作系统能够关闭计算机,是的,这是真的,但是如果您希望用户能够执行 python 代码,那么我不确定您如何避免这种情况跨度>
  • 用户提到“代码是改变或改变sqlite3中的某个表或数据库”。从python执行sql代码并不“难”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-18
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多