#연구/#Python

[파이썬/Python] tkinter로 패스워드 생성하는 프로그램 만들어보기 #tkinter로 랜덤 문자열 생성하는 프로그램 만들기 #파이썬 GUI 프로그래밍

every7hing 2020. 12. 23. 23:38
반응형

 

[파이썬/Python] tkinter로 패스워드 생성하는 프로그램 만들어보기 

#tkinter로 랜덤 문자열 생성하는 프로그램 만들기 

#파이썬 GUI 프로그래밍

 

 

오늘은 파이썬의 tkinter를 이용해서 랜덤 문자열을 생성하는 프로그램을 만들어볼게요.

원하는 길이를 선택하여 랜덤 문자열을 만들 수 있는 프로그램이에요.

 

우선 아래와 같이 랜덤 문자열을 생성하는 함수를 만들어 놓겠습니다.

def generate(password, length):
    password.set(''.join(random.choices('!@#$%^&*()' + string.ascii_letters + string.digits, k=int(length.get()))))

 

그리고는 tkinter를 이용하여 위의 함수를 호출해볼게요!

generate 함수를 호출 할 때, from functools import partial을 이용해서 함수 호출을 했어요.

파라미터도 같이 넘길 수 있으므로 눈여겨 보세요!

 

 

def main():
    win = Tk()
    password = StringVar()
    length = StringVar()

    ttk.Label(win, text='Length :', ).grid(column=0, row=0, pady=10, padx=10)

    combo = ttk.Combobox(win, width=4, textvariable=length)
    combo['values'] = [i for i in range(8, 21)]
    combo.grid(column=1, row=0, pady=10)

    ttk.Button(win, text='Generate', command=partial(generate, password, length)).grid(column=3, row=0, pady=10, padx=5)
    ttk.Entry(win, textvariable=password).grid(column=4, row=0, pady=5, padx=10)

    win.mainloop()

 

그럼 실행해보겠습니다!

 

 

 

 

 

여러가지 길이로 선택해서 Generate 버튼을 클릭하면 옆의 텍스트 부분에 랜덤 문자열이 표시되네요.

흐흐

잘 되니 기쁩니다.

 

완전한 코드는 아래에 공유하겠습니다.

즐거운 코딩되시길!

 

 

from tkinter import *
from tkinter import ttk
import random
import string
from functools import partial


def generate(password, length):
    password.set(''.join(random.choices('!@#$%^&*()' + string.ascii_letters + string.digits, k=int(length.get()))))


def main():
    win = Tk()
    password = StringVar()
    length = StringVar()

    ttk.Label(win, text='Length :', ).grid(column=0, row=0, pady=10, padx=10)

    combo = ttk.Combobox(win, width=4, textvariable=length)
    combo['values'] = [i for i in range(8, 21)]
    combo.grid(column=1, row=0, pady=10)

    ttk.Button(win, text='Generate', command=partial(generate, password, length)).grid(column=3, row=0, pady=10, padx=5)
    ttk.Entry(win, textvariable=password).grid(column=4, row=0, pady=5, padx=10)

    win.mainloop()


if __name__ == "__main__":
    main()

 

반응형