Stage 5--Python GUIプログラミングTKinter

6181 ワード

Pythonグラフィックスライブラリの概要
pythonは複数のグラフィック開発インタフェースのライブラリを提供し、いくつかの一般的なPython GUIライブラリは以下の通りである.
  • Tkinter:Tkinterモジュール(「Tkインタフェース」)は、Pythonの標準Tk GUIキットのインタフェースである.TkとTkinterは多くのUnixプラットフォームで使用でき、WindowsやMacintoshシステムにも応用できる.Tk8.0の後続バージョンでは、ローカルウィンドウスタイルを実現し、ほとんどのプラットフォームで良好に動作します.
  • wxPython:wxPythonはオープンソースソフトウェアであり、Python言語の優れたGUIグラフィックライブラリであり、Pythonプログラマーが完全で機能的なGUIユーザーインタフェースを作成するのに便利である.
  • Jython:JythonプログラムはJavaとシームレスに統合できます.いくつかの標準モジュールを除いて、JythonはJavaのモジュールを使用します.Jythonはほぼ標準のPythonの中でC言語に依存しないすべてのモジュールを持っている.たとえば、Jythonのユーザーインタフェースでは、Swing、AWT、またはSWTが使用されます.Jythonは、Javaバイトコードに動的または静的にコンパイルすることができる.

  • Tkinterは最も簡単なウィンドウを実現します
    import tkinter
    
    top = tkinter.Tk()
    top.mainloop()
    

    最初のステップはtkinterパッケージをインポートし、2番目のステップはフォームを作成し、3番目のループ(プログラムを終了しない)は、より複雑なインタフェースを書くにはTkinterのドキュメントを参照する必要があります.http://effbot.org/tkinterbook/
    Tkinterが実現した小さなDemo
    from tkinter import *
    
    class ControllPanel(Frame):
    
        def __init__(self, master):
            Frame.__init__(self, master, width=360, height=260)
            self.pack()
    
    
    class UrlArea(Frame):
    
        def __init__(self, master):
            Frame.__init__(self, master)
            self.pack(pady=20)
            self.label = Label(self, text="  :")
            self.label.pack(side=LEFT)
            self.url = Entry(self, width=40)
            self.url.pack(side=RIGHT)       
    
    
    class RegixArea(Frame):
    
        def __init__(self, master):
            Frame.__init__(self, master)
            self.pack()
            self.label = Label(self, text="  :")
            self.label.pack(side=LEFT)
            self.regix = Entry(self, width=40)
            self.regix.pack(side=RIGHT)
    
    
    class ButtonArea(Frame):
    
        def __init__(self, master):
            Frame.__init__(self, master)
            self.pack(pady=40)
            self.verify_button = Button(self, text="    ", command=self.verifyRegix)
            self.verify_button.pack(padx=50, side=LEFT)
            self.start_button = Button(self, text="    ", command=self.startRun)
            self.start_button.pack(padx=50, side=RIGHT)
    
        def verifyRegix(self):
            print("verify......")
    
        def startRun(self):
            print("run.......")
    
    
    class StatusBar(Frame):
    
        def __init__(self, master):
            Frame.__init__(self, master)
            self.pack(side=BOTTOM, fill=X)
            self.label = Label(self, bd=1, relief=SUNKEN, anchor=W)
            self.label.pack(fill=X)
    
        def set(self, format, *args):
            self.label.config(text=format % args)
            self.label.update_idletasks()
    
        def clear(self):
            self.label.config(text="")
            self.label.update_idletasks()   
    
    
    root = Tk()
    root.title("      ")
    
    #       
    scnWidth, scnHeight = root.maxsize()
    tmpcnf = '%dx%d+%d+%d'%(308, 101, (scnWidth-308)/2, (scnHeight-101)/2)
    root.geometry(tmpcnf)
    
    root.maxsize(600, 300)
    root.minsize(360, 220)
    #root.resizable(False, False) #       
    
    controllPanel = ControllPanel(root)
    
    UrlArea(controllPanel)
    RegixArea(controllPanel)
    ButtonArea(controllPanel)
    status_bar = StatusBar(root)
    status_bar.set("    ……")
    
    
    root.mainloop()
    root.destroy()