Вызов ОС дает разрешение отклонено - PullRequest
0 голосов
/ 28 мая 2018

Эй, я пытаюсь создать приложение с графическим интерфейсом, которое можно использовать для перечисления файла pcap, желаемая функциональность - это просто когда пользователь нажимает на перечисление, появляется другое окно, и пользователь может ввести имя файла, который должен быть запущен.

Просто для тестирования я в настоящее время принимаю ввод в командах raw bash, но, к сожалению, это не работает для меня.

Ниже приведен мой код: -

from tkinter import *
import tkinter
import subprocess
window = tkinter.Tk()
window.minsize(300,300)
#back = tkinter.Tk()
window.title("Extractor")
e1 = Entry(window)

def disp():
        subprocess.call([e1.get()])
def callback():
        Label(window,text="Command").grid(row=0)
        e1 = Entry(window)
        e1.insert(10,"Please input")
        e1.grid(row=0,column=1)
        process = tkinter.Button(window,text="GO",command=disp)
        process.grid(row=10,column=5)

toplabel=tkinter.Label(window,text="Enumeration tool for PCAP")


enum = tkinter.Button(window,text ="Enumerate",command=callback)
enum.grid(row=10)
window.mainloop()

Сгенерированная ошибка: -

Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1544, in __call__
    return self.func(*args)
  File "GUI.py", line 11, in disp
    subprocess.call([e1.get()])
  File "/usr/lib/python2.7/subprocess.py", line 172, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.7/subprocess.py", line 394, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1047, in _execute_child
    raise child_exception
OSError: [Errno 13] Permission denied

Мне нужна помощь с вызовом этого другого окна в другом фрейме окна, тогда как я могу поместить некоторые команды, такие как bash <input>, чтобы bash всегда был скрыт и выполнялся только ввод?скрипт и как я могу исправить эту ошибку.

1 Ответ

0 голосов
/ 28 мая 2018

Ваш код будет работать с очень минимальными изменениями:

...

window.title("Extractor")
e1 = None # <- your were creating two instances of your entry, one in 
          # global namespace and other local to the functions. Why?

def disp():
        subprocess.call([e1.get()]) # no need for for global, its a read op
def callback():
        global e1 # refer to global e1 on writes
        Label(window,text="Command").grid(row=0)
        e1 = Entry(window)

...

Вы можете создавать другие окна, кроме корневого окна Tk(), вызывая tkinter.Toplevel(root), который создает новое дочернее корневое окно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...