使用Python中的图形对话框向用户请求密码的最简单方法?

2024-03-28 12:33:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个备份守护进程,它将在后台静默运行。守护进程依赖于duplicity备份软件,备份时需要加密密钥。我不能通过控制台请求密码,因为显然,守护进程没有权限访问这样的密码。

如何轻松地创建一个提示,要求用户输入密码,并将其返回给应用程序(通过Python变量)?我使用的是Python 2.7。


Tags: 用户应用程序权限密码软件进程密钥备份
3条回答

因为不是每个人都想使用TK,下面是一个使用PyQt的脚本:

from PyQt5.QtWidgets import QApplication, QInputDialog, QLineEdit
import sys
app = QApplication(sys.argv)
qd = QInputDialog()
qd.setTextEchoMode(QLineEdit.Password)
qd.show()
app.exec()

而且,因为你通常不会为了一个该死的密码而直接向用户索要密码:

#!/bin/env python3
#passwordPrompt.py

from PyQt5.QtWidgets import QApplication, QInputDialog
import sys, time

def succFunc():
  sys.stdout.write(qd.textValue())
  sys.stdout.flush()
  exit(0)

def failFunc():
  exit(1)

app = QApplication(sys.argv)
qd = QInputDialog()
#QLineEdit.Password
qd.setTextEchoMode(2)
qd.rejected.connect(failFunc)
qd.accepted.connect(succFunc)
qd.show()
app.exec()

以及相应的bash函数:

#!/bin/bash

passwordPrompt.py | tee
from Tkinter import *

def getpwd():
    password = ''
    root = Tk()
    pwdbox = Entry(root, show = '*')
    def onpwdentry(evt):
         password = pwdbox.get()
         root.destroy()
    def onokclick():
         password = pwdbox.get()
         root.destroy()
    Label(root, text = 'Password').pack(side = 'top')

    pwdbox.pack(side = 'top')
    pwdbox.bind('<Return>', onpwdentry)
    Button(root, command=onokclick, text = 'OK').pack(side = 'top')

    root.mainloop()
    return password

因为您要求最简单的(Python2.7):

import Tkinter, tkSimpleDialog
tkSimpleDialog.askstring("Password", "Enter password:", show='*')

对于Python3.3:

import tkinter
tkinter.simpledialog.askstring("Password", "Enter password:", show='*')

对于Python3.6+:

import tkinter as tk
import tkinter.simpledialog
tk.Tk().withdraw()
tkinter.simpledialog.askstring("Password", "Enter password:", show='*')

相关问题 更多 >