Tkinterで自分用のテンプレート
ちょっとしたスクリプトでも、GUIつけとくと、
あとから便利だろうということで簡単な雛形を作成しときます。
# -*- coding: utf-8 -*- """ Tkinterで簡単なGUIを作る時のひな型 シンプルに。 http://www.shido.info/py/python6.htmlにあるデモを参考にしています。 """ import Tkinter as Tk import tkFileDialog as Fd import ScrolledText as S import tkMessageBox class MyFrame(Tk.Frame): def __init__(self, master=None): Tk.Frame.__init__(self, master) self.master.title('sample') la_top = Tk.Label(self, text=u'説明文') la_top.pack() # ファイル選択用 f1 = Tk.Frame(self) la1 = Tk.Label(f1, text=u'ファイル名') self.entry1 = Tk.Entry(f1, width=40) button1 = Tk.Button(f1, text='Browse...', command=self.filedialog) la1.pack(side=Tk.LEFT) self.entry1.pack(side=Tk.LEFT) button1.pack(side=Tk.LEFT) f1.pack() # 設定1 self.var_c1 = Tk.IntVar() self.var_c2 = Tk.IntVar() la_setting1 = Tk.Label(self, text=u'設定1') c1 = Tk.Checkbutton(self, text="check1", variable=self.var_c1) c2 = Tk.Checkbutton(self, text="check2", variable=self.var_c2) la_setting1.pack() c1.pack() c2.pack() # 設定2 self.var_r1 = Tk.IntVar() la_setting2 = Tk.Label(self, text=u'設定2') r1 = Tk.Radiobutton(self, text="check1", variable=self.var_r1, value=0) r2 = Tk.Radiobutton(self, text="check2", variable=self.var_r1, value=1) la_setting2.pack() r1.pack() r2.pack() # テキスト self.txt = S.ScrolledText(self, width=40) self.txt.pack() # ボタン f_button = Tk.Frame(self) button_func = Tk.Button(f_button, text=u'なんかやる', command=self.main) button_help= Tk.Button(f_button, text=u'HELP', command=self.help) button_func.pack(side=Tk.LEFT) button_help.pack(side=Tk.LEFT) f_button.pack() def main(self): """ メインの処理 """ s = "File Name: " + self.entry1.get() + "\n" s += "c1: %d, c2: %d\n" % (self.var_c1.get(), self.var_c2.get()) s += "r1: %d\n" % (self.var_r1.get()) top = Tk.Toplevel() t = TextFrame(top, "MAIN") t.set_text(s) t.pack() def help(self): tkMessageBox.showinfo('test', 'ヘルプだよ') def filedialog(self): # saveするときはasksavesafilename fname = Fd.askopenfilename(filetypes=[('All Files', ('*'))]) if fname: self.entry1.delete(0, Tk.END) self.entry1.insert(Tk.END, fname) class TextFrame(Tk.Frame): def __init__(self, master, title): Tk.Frame.__init__(self, master) self.master.title(title) self.txt = S.ScrolledText(self) self.txt.pack() def set_text(self, text): self.txt.insert(Tk.END, text) if __name__ == '__main__': frame = MyFrame() frame.pack() frame.mainloop()