IPythonで書きなぐったプロトタイプ
#!/usr/bin/env python # -*- coding: utf-8 -*- from Tkinter import * f = Frame() f.pack() e = Entry(f) e.pack() b = Button(f) b.pack() b.config(text=u"生成") f.master.title(u"ランダム文字列生成") # generate passwd import string import random # slider s = Scale(f) s.pack() s.config(orient=HORIZONTAL) s.config(label=u'長さ') s.config(from_=8) s.config(to=20) def disp_rand(): e.delete(0, END) e.insert(0, "".join(random.sample(string.letters + string.digits, s.get()))) e.select_range(0, END) b.config(command=disp_rand) e.config(width=30) f.mainloop()
クラスを使うように修正
Pythonのクラスとかよくわかりません!><
テキストボックスもボタンもスライダーもみんなフィールドにしちゃったけど、フィールドは最小限にして、IntVarを使ったほうがいいんかな。
#!/usr/bin/env python # -*- coding: utf-8 -*- from Tkinter import * import string import random class PasswordGenerator(Frame): def init(self): self.master.title(u"ランダム文字列生成") self.e = Entry(self, width=30) self.b = Button(self, text=u"生成", command=self.disp_rand) # slider self.s = Scale(self, label=u'長さ', from_=8, to=20, orient=HORIZONTAL) self.e.pack() self.b.pack() self.s.pack() def disp_rand(self): self.e.delete(0, END) self.e.insert(0, "".join(random.sample(string.letters + string.digits, self.s.get()))) self.e.select_range(0, END) def quit(self): self.master.destroy() def __init__(self, master=None): Frame.__init__(self, master) self.pack() self.init() if __name__ == "__main__": pg = PasswordGenerator() pg.mainloop()