Python 提供了多個圖形開發界面的庫,幾個經常使用 Python GUI 庫以下:html
Tkinter: python
Tkinter 模塊(Tk 接口)是 Python 的標準 Tk GUI 工具包的接口 .程序員
Tk 和 Tkinter 能夠在大多數的 Unix 平臺下使用,一樣能夠應用在 Windows 和 Macintosh 系統裏。編程
Tk8.0 的後續版本能夠實現本地窗口風格,並良好地運行在絕大多數平臺中。canvas
wxPython:api
wxPython 是一款開源軟件 app
是 Python 語言的一套優秀的 GUI 圖形庫,容許 Python 程序員很方便的建立完整的、功能健全的 GUI 用戶界面。函數
Jython:工具
Jython 程序能夠和 Java 無縫集成。oop
除了一些標準模塊,Jython 使用 Java 的模塊。
Jython 幾乎擁有標準的Python 中不依賴於 C 語言的所有模塊。
好比,Jython 的用戶界面將使用 Swing,AWT或者 SWT。
Jython 能夠被動態或靜態地編譯成 Java 字節碼。
------本專題只介紹tkinter------
須要注意的是:
一、tkinter是每一個python版本都內置的一個圖形庫
二、在使用turtle庫的時候turtle這個庫是會調用tkinter這個庫的
三、這個庫在py2和py3裏的名字是不同的python2叫Tkinter,python3叫tkinter
使用tkinter畫圖:
一、畫圓形
二、畫直線
三、畫方形
四、製做Windows窗口
五、tkinter中各屬性及方法的使用介紹:
原題:
使用tkinter庫畫圓形。
原題給出的代碼:
#!/usr/bin/python # encoding=utf-8 # -*- coding: UTF-8 -*- # 畫圖,學用circle畫圓形。 if __name__ == '__main__': from tkinter import * canvas = Canvas(width=800, height=600, bg='yellow') canvas.pack(expand=YES, fill=BOTH) k = 1 j = 1 for i in range(0,26): canvas.create_oval(310 - k,250 - k,310 + k,250 + k, width=1) k += j j += 0.3 mainloop()
輸出結果:
原題:畫圖,學用line畫直線
原題給出的代碼:
#!/usr/bin/python # -*- coding: UTF-8 -*- if __name__ == '__main__': from tkinter import * canvas = Canvas(width=300, height=300, bg='green') canvas.pack(expand=YES, fill=BOTH) x0 = 263 y0 = 263 y1 = 275 x1 = 275 for i in range(19): canvas.create_line(x0,y0,x0,y1, width=1, fill='red') x0 = x0 - 5 y0 = y0 - 5 x1 = x1 + 5 y1 = y1 + 5 x0 = 263 y1 = 275 y0 = 263 for i in range(21): canvas.create_line(x0,y0,x0,y1,fill = 'red') x0 += 5 y0 += 5 y1 += 5 mainloop()
輸出效果:
原題:
畫圖,學用rectangle畫方形。
程序分析:
rectangle(int left, int top, int right, int bottom)
參數說明:(left ,top )爲矩形的左上座標,(right,bottom)爲矩形的右下座標,二者可肯定一個矩形的大小
原題給出的代碼:
#!/usr/bin/python # -*- coding: UTF-8 -*- if __name__ == '__main__': from tkinter import * root = Tk() root.title('Canvas') canvas = Canvas(root,width = 400,height = 400,bg = 'yellow') x0 = 263 y0 = 263 y1 = 275 x1 = 275 for i in range(19): canvas.create_rectangle(x0,y0,x1,y1) x0 -= 5 y0 -= 5 x1 += 5 y1 += 5 canvas.pack() root.mainloop()
輸出結果:
源碼:
#!/usr/bin/python # -*- coding: GBK -*- import tkinter #import tkMessageBox #Py2.0中 import tkinter.messagebox #Py3.0中 top = tkinter.Tk() def helloCallBack(): tkinter.messagebox.showinfo( "Hello Python", "Hello Runoob") B = tkinter.Button(top, text ="sss", command = helloCallBack) B.pack() # 進入消息循環 top.mainloop()
效果:
點擊按鈕,出現:
其中Tkinter庫的使用還需深刻學習!
5、tkinter庫的使用介紹:(上述代碼中已使用的)
tkinter包含的方法:
>>> dir(tkinter) ['ACTIVE', 'ALL', 'ANCHOR', 'ARC', 'BASELINE', 'BEVEL', 'BOTH', 'BOTTOM', 'BROWSE', 'BUTT', 'BaseWidget', 'BitmapImage', 'BooleanVar', 'Button', 'CASCADE', 'CENTER', 'CHAR', 'CHECKBUTTON', 'CHORD', 'COMMAND', 'CURRENT', 'CallWrapper', 'Canvas', 'Checkbutton', 'DISABLED', 'DOTBOX', 'DoubleVar', 'E', 'END', 'EW', 'EXCEPTION', 'EXTENDED', 'Entry', 'Event', 'EventType', 'FALSE', 'FIRST', 'FLAT', 'Frame', 'GROOVE', 'Grid', 'HIDDEN', 'HORIZONTAL', 'INSERT', 'INSIDE', 'Image', 'IntVar', 'LAST', 'LEFT', 'Label', 'LabelFrame', 'Listbox', 'MITER', 'MOVETO', 'MULTIPLE', 'Menu', 'Menubutton', 'Message', 'Misc', 'N', 'NE', 'NO', 'NONE', 'NORMAL', 'NS', 'NSEW', 'NUMERIC', 'NW', 'NoDefaultRoot', 'OFF', 'ON', 'OUTSIDE', 'OptionMenu', 'PAGES', 'PIESLICE', 'PROJECTING', 'Pack', 'PanedWindow', 'PhotoImage', 'Place', 'RADIOBUTTON', 'RAISED', 'READABLE', 'RIDGE', 'RIGHT', 'ROUND', 'Radiobutton', 'S', 'SCROLL', 'SE', 'SEL', 'SEL_FIRST', 'SEL_LAST', 'SEPARATOR', 'SINGLE', 'SOLID', 'SUNKEN', 'SW', 'Scale', 'Scrollbar', 'Spinbox', 'StringVar', 'TOP', 'TRUE', 'Tcl', 'TclError', 'TclVersion', 'Text', 'Tk', 'TkVersion', 'Toplevel', 'UNDERLINE', 'UNITS', 'VERTICAL', 'Variable', 'W', 'WORD', 'WRITABLE', 'Widget', 'Wm', 'X', 'XView', 'Y', 'YES', 'YView', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_cnfmerge', '_default_root', '_exit', '_flatten', '_join', '_magic_re', '_setit', '_space_re', '_splitdict', '_stringify', '_support_default_root', '_test', '_tkerror', '_tkinter', '_varnum', 'commondialog', 'constants', 'enum', 'getboolean', 'getdouble', 'getint', 'image_names', 'image_types', 'mainloop', 'messagebox', 're', 'simpledialog', 'sys', 'wantobjects'] >>>
tkinter爲module類型
tkinter.ACTIVE 爲str類型
tkinter.ACTIVE.capitalize 爲內置方法/函數
>>> type(tkinter) <class 'module'> >>> type(tkinter.ACTIVE) <class 'str'> >>> type(tkinter.ACTIVE.capitalize) <class 'builtin_function_or_method'> >>>
一、tkinter.messagebox
二、tkinter.Button
三、tkinter.Tk
————————(我是分割線)————————
參考:
1. RUNOOB.COM:
https://www.runoob.com/python/python-exercise-example56.html / 畫圓
https://www.runoob.com/python/python-gui-tkinter.html / Python GUI編程(Tkinter)
https://www.runoob.com/python/python-tk-button.html /製做窗口
https://www.runoob.com/python/python-exercise-example57.html / 畫直線
https://www.runoob.com/python/python-exercise-example58.html / 畫方形
二、https://zhidao.baidu.com/question/432270397607348804.html
備註:
初次編輯時間:2019年10月6日21:42:39
第一次修改時間:2019年10月7日10:31:36 / 除畫圓外,增長了其餘功能模塊;
第二次修改時間:2019年10月7日15:45:12 / 以模塊知識點命名,逐步深刻學習該模塊的使用方法和經典案例。
環境:Windows 7 / Python 3.7.2