Tkinter 암호 금고 화면 사용
25852 단어 programmingpythontkinter
아치법
비밀번호 금고 화면에는 비밀번호 추가, 비밀번호 업데이트, 비밀번호 삭제 등 몇 개의 단추가 있습니다.이 단추를 누르면 특정한 방법을 호출할 것입니다.이 방법을 작성해 보겠습니다.
from tkinter import simpledialog
from database import init_database
class VaultMethods:
def __init__ (self):
self.db, self.cursor = init_database()
def popup_entry(self, heading):
answer = simpledialog.askstring("Enter details", heading)
return answer
def add_password(self, vault_screen):
platform = self.popup_entry("Platform")
userid = self.popup_entry("Username/Email")
password = self.popup_entry("Password")
insert_cmd = """INSERT INTO vault(platform, userid, password) VALUES (?, ?, ?)"""
self.cursor.execute(insert_cmd, (platform, userid, password))
self.db.commit()
vault_screen()
def update_password(self, id, vault_screen):
password = self.popup_entry("Enter New Password")
self.cursor.execute(
"UPDATE vault SET password = ? WHERE id = ?", (password, id))
self.db.commit()
vault_screen()
def remove_password(self, id, vault_screen):
self.cursor.execute("DELETE FROM vault WHERE id = ?", (id,))
self.db.commit()
vault_screen()
위 스크립트에서 simpledialog
을 사용하여 팝업 창을 만듭니다.버튼을 클릭할 때마다 팝업 창이 나타나 정보를 묻습니다.모든 메서드를 포함하는 VaultMethod 클래스를 만들었습니다.구조 함수에서 우리는 db
과 cursor
의 대상을 얻었다.
첫 번째 방법은 popup_entry()
이라고 한다.팝업 창을 만드는 단축키로 이 방법을 만들었습니다.이 방법은 제목을 매개 변수로 합니다.askstring
방법을 사용하여 팝업 창을 만듭니다.그런 다음 팝업 입력 필드에 입력한 값을 반환합니다.
다음 방법은 add_password()
입니다.vault 화면을 매개 변수로 합니다.새 암호를 추가할 때마다 플랫폼 이름, 사용자 이름/이메일, 암호 등 세 가지 세부 정보가 필요합니다.따라서 같은 페이지를 위한 세 개의 팝업 창을 만들어야 합니다.위에서 만든 방법으로 팝업 창을 만들 것입니다.이 팝업 창에서 세 개의 상응하는 값을 얻은 후에 우리는 insert_cmd
을 사용하여 이 데이터를 데이터베이스에 추가했다.그리고 다시 한 번 vault_screen()
을 사용자에게 보여 드리겠습니다.
다음 방법은 update_password()
입니다. 항목과vault 화면의 id (데이터베이스에서 온 것) 를 매개 변수로 합니다.그리고 새 비밀번호를 입력할 수 있도록 팝업 방법을 사용합니다.일단 우리가 새 암호의 값을 얻게 되면, 우리는 다른 데이터베이스 명령을 실행하여 제공된 id의 암호를 업데이트할 것이다.그리고 다시 한 번 vault_screen()
을 사용자에게 보여 드리겠습니다.
마지막 방법은 remove_password()
입니다. 항목과vault 화면의 id (데이터베이스에서 온 것) 를 매개 변수로 다시 사용합니다.이 방법에서, 우리는 제공한 id와 일치하는 항목만 삭제합니다.그리고 다시 한 번 vault_screen()
을 사용자에게 보여 드리겠습니다.
3. 비밀번호 금고 화면
이것은 프로그램의 메인 화면입니다. 사용자는 새로운 비밀번호를 추가하고 이전에 저장한 비밀번호를 수정하며 비밀번호를 삭제하고 복사할 수 있습니다.
def password_vault_screen(self):
for widget in self.window.winfo_children():
widget.destroy()
vault_methods = VaultMethods()
self.window.geometry("850x350")
main_frame = Frame(self.window)
main_frame.pack(fill=BOTH, expand=1)
main_canvas = Canvas(main_frame)
main_canvas.pack(side=LEFT, fill=BOTH, expand=1)
main_scrollbar = Scrollbar(main_frame, orient=VERTICAL, command=main_canvas.yview)
main_scrollbar.pack(side=RIGHT, fill=Y)
main_canvas.configure(yscrollcommand=main_scrollbar.set)
main_canvas.bind('<Configure>', lambda e: main_canvas.configure(
scrollregion=main_canvas.bbox("all")))
second_frame = Frame(main_canvas)
main_canvas.create_window((0, 0), window=second_frame, anchor="nw")
generate_password_btn = Button(second_frame, text="Generate Password",
command=PasswordGenerator)
generate_password_btn.grid(row=1, column=2, pady=10)
add_password_btn = Button(
second_frame, text="Add New Password", command=partial(vault_methods.add_password, self.password_vault_screen))
add_password_btn.grid(row=1, column=3, pady=10)
lbl = Label(second_frame, text="Platform")
lbl.grid(row=2, column=0, padx=40, pady=10)
lbl = Label(second_frame, text="Email/Username")
lbl.grid(row=2, column=1, padx=40, pady=10)
lbl = Label(second_frame, text="Password")
lbl.grid(row=2, column=2, padx=40, pady=10)
self.cursor.execute("SELECT * FROM vault")
if self.cursor.fetchall():
i = 0
while True:
self.cursor.execute("SELECT * FROM vault")
array = self.cursor.fetchall()
platform_label = Label(second_frame, text=(array[i][1]))
platform_label.grid(column=0, row=i + 3)
account_label = Label(second_frame, text=(array[i][2]))
account_label.grid(column=1, row=i + 3)
password_label = Label(second_frame, text=(array[i][3]))
password_label.grid(column=2, row=i + 3)
copy_btn = Button(second_frame, text="Copy Password",
command=partial(self.copy_text, array[i][3]))
copy_btn.grid(column=3, row=i + 3, pady=10, padx=10)
update_btn = Button(second_frame, text="Update Password",
command=partial(vault_methods.update_password, array[i][0], self.password_vault_screen))
update_btn.grid(column=4, row=i + 3, pady=10, padx=10)
remove_btn = Button(second_frame, text="Delete Password",
command=partial(vault_methods.remove_password, array[i][0], self.password_vault_screen))
remove_btn.grid(column=5, row=i + 3, pady=10, padx=10)
i += 1
self.cursor.execute("SELECT * FROM vault")
if len(self.cursor.fetchall()) <= i:
break
위의 스크립트에서, 우선, 우리는 다른 열린 작은 위젯을 모두 삭제합니다. (만약 있다면.)그런 다음 VaultMethod 클래스의 vault_method
객체를 작성합니다.그리고 우리는 프레임을 만들고 프레임 안에 화포를 그립니다.비밀번호가 너무 많으면 스크롤 바를 만들고 있습니다.
다음에 단추와 데이터를 놓을 다른 프레임워크를 만들 것입니다.첫 번째 줄에 비밀번호를 생성하고 추가하는 두 개의 단추가 있습니다.Generate Password(암호 생성) 버튼을 클릭하면 시리즈의 first part에 구축된 암호 생성기가 호출됩니다.새 암호 추가 버튼은 VaultMethod 클래스에서 add_password()
메서드를 호출합니다.
다음 두 번째 줄에는 플랫폼, 전자메일, 사용자 이름, 비밀번호 세 개의 탭이 있습니다.그 다음에 우리는 다음 줄에 데이터베이스에서 나온 데이터를 보여야 한다.그래서 우리는 모든 데이터를 얻어야 한다.우리는while 순환과 교체기 i를 사용합니다. 모든 데이터는 array
이라는 변수에 저장됩니다.패턴은 다음과 같습니다.
[(1, 'Facebook', 'ashutosh', '3ftF%IkoQJ'), (2, 'Gmail', 'ashutosh', 'Hello@123')]
만약 네가 주의한다면, 수조는 하나의 원조 목록이다.각 모듈에는 id, 플랫폼 이름, 사용자 이름/이메일, 비밀번호 네 가지 요소가 있습니다.
현재, 순환 중, 우리는 모든 순환에 해당하는 라벨을 만들고 있습니다.첫 번째 열, 즉 플랫폼 이름은 array[i][1]
에 제시될 것이다.마찬가지로 두 번째 열은 array[i][2]
이 제시한 사용자 이름/이메일 필드이고, 세 번째 열은 array[i][3]
이 제시한 비밀번호 필드이다.매번 교체할 때마다 줄은 상응하여 바뀔 것이다.첫 번째 데이터는 세 번째 줄에 넣어야 하기 때문에row=i+3, 그 중에서 첫 번째 교체된 i=0에 쓸 수 있습니다.열마다 비밀번호 복사, 업데이트, 비밀번호 삭제 등 세 가지 단추가 있습니다.이 단추들은 같은 줄에 놓여 있지만, 열의 값은 각각 3, 4, 5이다.이러한 버튼은 VaultMethod 클래스에 정의된 메서드를 호출합니다.한 줄을 완성한 후, 우리는 i
의 값을 1로 증가시켜 다음 줄로 이동할 것이다.
만약 데이터베이스에 있는 데이터 수가 i
보다 작거나 같으면, 우리는 즉시 순환을 중단할 것입니다.
데모
결론
이것은 이 시리즈의 마지막 블로그다.이 프로그램에 주 비밀번호를 잊어버리는 등 더 많은 기능을 추가할 수 있습니다.이 프로그램은 Python이 설치되어 있든 없든 실행 가능한 프로그램으로 변환할 수 있습니다.이 시리즈가 마음에 드셨으면 좋겠어요!
Github 저장소 - https://github.com/ashutoshkrris/Password-Manager-using-Tkinter
Reference
이 문제에 관하여(Tkinter 암호 금고 화면 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/ashutoshkrris/password-vault-screen-using-tkinter-3m15
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from tkinter import simpledialog
from database import init_database
class VaultMethods:
def __init__ (self):
self.db, self.cursor = init_database()
def popup_entry(self, heading):
answer = simpledialog.askstring("Enter details", heading)
return answer
def add_password(self, vault_screen):
platform = self.popup_entry("Platform")
userid = self.popup_entry("Username/Email")
password = self.popup_entry("Password")
insert_cmd = """INSERT INTO vault(platform, userid, password) VALUES (?, ?, ?)"""
self.cursor.execute(insert_cmd, (platform, userid, password))
self.db.commit()
vault_screen()
def update_password(self, id, vault_screen):
password = self.popup_entry("Enter New Password")
self.cursor.execute(
"UPDATE vault SET password = ? WHERE id = ?", (password, id))
self.db.commit()
vault_screen()
def remove_password(self, id, vault_screen):
self.cursor.execute("DELETE FROM vault WHERE id = ?", (id,))
self.db.commit()
vault_screen()
def password_vault_screen(self):
for widget in self.window.winfo_children():
widget.destroy()
vault_methods = VaultMethods()
self.window.geometry("850x350")
main_frame = Frame(self.window)
main_frame.pack(fill=BOTH, expand=1)
main_canvas = Canvas(main_frame)
main_canvas.pack(side=LEFT, fill=BOTH, expand=1)
main_scrollbar = Scrollbar(main_frame, orient=VERTICAL, command=main_canvas.yview)
main_scrollbar.pack(side=RIGHT, fill=Y)
main_canvas.configure(yscrollcommand=main_scrollbar.set)
main_canvas.bind('<Configure>', lambda e: main_canvas.configure(
scrollregion=main_canvas.bbox("all")))
second_frame = Frame(main_canvas)
main_canvas.create_window((0, 0), window=second_frame, anchor="nw")
generate_password_btn = Button(second_frame, text="Generate Password",
command=PasswordGenerator)
generate_password_btn.grid(row=1, column=2, pady=10)
add_password_btn = Button(
second_frame, text="Add New Password", command=partial(vault_methods.add_password, self.password_vault_screen))
add_password_btn.grid(row=1, column=3, pady=10)
lbl = Label(second_frame, text="Platform")
lbl.grid(row=2, column=0, padx=40, pady=10)
lbl = Label(second_frame, text="Email/Username")
lbl.grid(row=2, column=1, padx=40, pady=10)
lbl = Label(second_frame, text="Password")
lbl.grid(row=2, column=2, padx=40, pady=10)
self.cursor.execute("SELECT * FROM vault")
if self.cursor.fetchall():
i = 0
while True:
self.cursor.execute("SELECT * FROM vault")
array = self.cursor.fetchall()
platform_label = Label(second_frame, text=(array[i][1]))
platform_label.grid(column=0, row=i + 3)
account_label = Label(second_frame, text=(array[i][2]))
account_label.grid(column=1, row=i + 3)
password_label = Label(second_frame, text=(array[i][3]))
password_label.grid(column=2, row=i + 3)
copy_btn = Button(second_frame, text="Copy Password",
command=partial(self.copy_text, array[i][3]))
copy_btn.grid(column=3, row=i + 3, pady=10, padx=10)
update_btn = Button(second_frame, text="Update Password",
command=partial(vault_methods.update_password, array[i][0], self.password_vault_screen))
update_btn.grid(column=4, row=i + 3, pady=10, padx=10)
remove_btn = Button(second_frame, text="Delete Password",
command=partial(vault_methods.remove_password, array[i][0], self.password_vault_screen))
remove_btn.grid(column=5, row=i + 3, pady=10, padx=10)
i += 1
self.cursor.execute("SELECT * FROM vault")
if len(self.cursor.fetchall()) <= i:
break
[(1, 'Facebook', 'ashutosh', '3ftF%IkoQJ'), (2, 'Gmail', 'ashutosh', 'Hello@123')]
결론
이것은 이 시리즈의 마지막 블로그다.이 프로그램에 주 비밀번호를 잊어버리는 등 더 많은 기능을 추가할 수 있습니다.이 프로그램은 Python이 설치되어 있든 없든 실행 가능한 프로그램으로 변환할 수 있습니다.이 시리즈가 마음에 드셨으면 좋겠어요!
Github 저장소 - https://github.com/ashutoshkrris/Password-Manager-using-Tkinter
Reference
이 문제에 관하여(Tkinter 암호 금고 화면 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/ashutoshkrris/password-vault-screen-using-tkinter-3m15
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Tkinter 암호 금고 화면 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ashutoshkrris/password-vault-screen-using-tkinter-3m15텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)