Python3 Tkinter - 将输入(y)写入控制台以进行子进程

时间:2016-07-25 15:12:07

标签: python linux python-3.x input tkinter

我一直在四处寻找我的问题的答案,但一直不走运。我想答案是使用原生python,希望很简单。

我的问题是我在我的tkinter应用程序中使用了子进程,但其中一个命令要求你编写Y / N以确保你想继续执行该操作。

所以当我看到这样的消息时,我正在寻找一种方法将y写入终端: 你确定你要继续吗? (Y / N)

我已经尝试过运行subprocess.run(" y"),但这似乎不起作用。

我在Debian Linux上测试它并调用询问我是否要继续的命令,是subprocess.getoutput(),以便我可以检查错误。

CODE

class RemovePublicKeyDialog:
def __init__(self, parent):
    top = self.top = Toplevel(parent)

    Label(top, text="Who to remove?").pack()

    self.e = Entry(top)
    self.e.pack(padx=5)

    b = Button(top, text="REMOVE", command=self.ok)
    b.pack(pady=5)

def ok(self):
    #print("value is " + self.e.get())
    key = self.e.get()
    cmd = subprocess.getoutput("gpg --delete-keys " + key)
    print(cmd)
    if ("key \"" + key + "\" not found" in cmd):
        messagebox.showerror("Error", "No such public key.")
    elif ("Delete this key from keyring?" in cmd):
        #subprocess.run("echo 'y'")
        messagebox.showinfo("Success", "Public key \"" + key + "\" deleted from keyring.")
    else:
        messagebox.showerror("Error", "Unknown error, did you input a key?")

    self.top.destroy()

这是"主要"代码,一切正常,但只是我需要输入Y才能继续。

0 个答案:

没有答案