【问题标题】:Running linux commnds on Tkinter在 Tkinter 上运行 linux 命令
【发布时间】:2021-04-17 10:06:46
【问题描述】:

我可以使用subprocess 模块通过我的GUI 运行某些Linux 命令,例如ls -l。我还想创建一个 GUI,在 tkinter 上执行 apktool 命令来反汇编 apk 文件。我该怎么做?我希望apktool 命令动态工作。

我的代码:

from tkinter import *
import subprocess

def run():
    subprocess.run(["apktool", "d" ,"music.apk"])

root = Tk()
Button(root, text="Click to run 'ls -l'", command=run).pack()
root.mainloop()

【问题讨论】:

  • 您已经能够运行命令并捕获它们的输出,对吧?运行apktool 命令有什么问题?
  • 我可以运行 linux 命令,但我不知道如何通过我的 GUI 动态运行 apktool 命令
  • from tkinter import * import subprocess def run(): subprocess.run(["apktool", "d" ,"music.apk"]) root = Tk() Button(root, text= “单击以运行 'ls -l'”,command=run).pack() root.mainloop() 每次运行此代码时,我都必须更改 .apk 文件名。我不想要那个。我希望它搜索 .apk 文件名,然后运行命令并反汇编该 apk
  • 您希望用户能够选择要打开的文件然后相应地运行命令吗?
  • 一旦我按下按钮,用户应该能够查看 apk 文件并从中选择一个,并且在子进程中运行的命令将反汇编用户选择的特定 apk 文件。

标签: python tkinter apktool


【解决方案1】:

试试这个:

from tkinter.filedialog import askopenfilename
from tkinter import *
import subprocess

def run():
    apk_filepath = askopenfilename(filetypes=(("APK files", "*.apk"), ("All files", "*.*")))
    subprocess.run(["apktool", "d", apk_filepath])

root = Tk()
button = Button(root, text="Click to run 'ls -l'", command=run)
button.pack()
root.mainloop()

它使用tkinter.filedialog.askopenfilename 向用户询问文件。

【讨论】:

  • @Prajwal 顺便说一句,如果你想强制用户只选择 .apk 文件将 filetypes=(("APK files", "*.apk"), ("All files", "*.*")) 更改为 filetypes=(("APK files", "*.apk"), )
  • 另外,我想使用 tkinter 在我的 GUI 中动态创建选项卡,而不是向每个函数添加选项卡 1 和选项卡 2。我该怎么做?
  • @Prajwal 你确定你最后的评论不是针对this 的问题吗? :D
  • 是的,它不是针对这个问题的。但是我很长一段时间以来都被困在那个点上。我不知道如何动态创建标签
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 2015-06-03
相关资源
最近更新 更多