运行 linux 来自 python GUI tkinter 的终端命令
Run linux terminal commands from python GUI tkinter
我想 运行 linux 来自 tkinter 的终端命令。因此,无论 linux 命令是什么,我都会在 tkinter“Entry” 小部件中键入并按下按钮,使其成为终端中的 运行。
如果您看到代码:
from tkinter import *
import subprocess
root = Tk()
entry1 = Entry(root)
entry1.grid(row=0, column=0)
def print_entry1():
subprocess.run(entry1.get())
Button(root, text="entry1", command=print_entry1).grid(row=1, column=1)
root.mainloop()
您会发现它适用于“单字”命令,例如 pwd、whoami、ls。
但是,如果您在输入过程中添加 space 和一些标志/参数,则会出现错误...例如,它无法理解 ls -l 命令。
一旦在输入过程中引入 space 就会出现错误...
能否请您指教...
非常感谢。
你必须import shlex
然后替换
subprocess.run(entry1.get())
与
subprocess.run(shlex.split(entry1.get()))
这会将用户输入的字符串转换为列表。
我想 运行 linux 来自 tkinter 的终端命令。因此,无论 linux 命令是什么,我都会在 tkinter“Entry” 小部件中键入并按下按钮,使其成为终端中的 运行。
如果您看到代码:
from tkinter import *
import subprocess
root = Tk()
entry1 = Entry(root)
entry1.grid(row=0, column=0)
def print_entry1():
subprocess.run(entry1.get())
Button(root, text="entry1", command=print_entry1).grid(row=1, column=1)
root.mainloop()
您会发现它适用于“单字”命令,例如 pwd、whoami、ls。 但是,如果您在输入过程中添加 space 和一些标志/参数,则会出现错误...例如,它无法理解 ls -l 命令。 一旦在输入过程中引入 space 就会出现错误...
能否请您指教... 非常感谢。
你必须import shlex
然后替换
subprocess.run(entry1.get())
与
subprocess.run(shlex.split(entry1.get()))
这会将用户输入的字符串转换为列表。