1.窗口GUI函数库
Python也提供了用于开发图形用户界面(GUI)的各种功能,常见的函数库如下。
· Tkinter:这是Python附带的Tk GUI工具包中的Python函数库,本章会详细介绍。
· wxPython:这是一个用于wxWindows的图形用户界面,官方网址为http://wxpython.org。
· JPython:这是一个以Java为基础的Python函数库,使用Java的GUI类为基础的Python GUI程 序。
· PyQt:这是一个以Qt为基础的Python函数库,使用Qt的Python GUI程序。
Tkinter是Python的标准GUI图形化使用界面,支持跨平台功能,是当前Python开发者使用最多的函数库。它已经包含在Python的安装程序中,不用另外再通过pip安装。
使用Tkinter创建GUI应用程序,步骤如下:
(1)导入Tkinter模块。
(2)创建GUI应用程序的主窗口。
(3)将一个或多个控制件添加到主窗口中。
(4)程序做无限循环,等待用户触发每个组件的事件,并做相应的反应。
try:
import Tkinter as tk
except ImportError:
import tkinter as tk
win=tk.Tk()
win.wm_title("hello,word!")
win.minsize(width=666,height=480)
win.maxsize(width=666,height=480)
win.resizable(width=False,height=False)
win.mainloop()
2.文字Label
如何在窗口中加入文字组件,然后显示在窗口上。需要特别注意两个函数pack和place,它们的作用都是把组件加到窗口中,其差异如下:
· pack(),依照使用的先后顺序放入窗口。
· place(),在窗口中X、Y指定的位置加入文字组件。
try:
import Tkinter as tk
except ImportError:
import tkinter as tk
win=tk.Tk()
label1=tk.Label(win,text="hello,word")
label1.pack()
label2=tk.Label(win,text="hello no2",fg="red",bg="yellow")
label2.pack()
label3=tk.Label(win,text="hello,no3")
label3.pack(side="top",anchor="w")
label4=tk.Label(win,text="hello,no3")
label5=tk.Label(win,text="powen",bg="#ff0000")
label5.place(x=120,y=140)
win.mainloop()
3.显示图片Image
try:
import tkinter as tk
from PIL import ImageTk, Image
win = tk.Tk()
img_path = r"C:/Users/nsy/Desktop/58.jpg"
try:
img = ImageTk.PhotoImage(Image.open(img_path))
except IOError:
print(f"Cannot open image file: {img_path}")
win.destroy() # 如果无法加载图像,关闭窗口
raise
label1 = tk.Label(win, image=img)
label1.pack()
win.mainloop()
except ImportError:
print("Tkinter or PIL is not installed.")
4.按键Button
介绍如何新增按键,并且处理用户按下按键之后的反应动作。按键的方法如下:在程序中通过tk.Button添加一个按键,并指定该按键按下去后,会调用event1自定义的函数。
try:
import Tkinter as tk
except ImportError:
import tkinter as tk
def event1():
print("btn1 presses.")
btn1=tk.Button(win,text="press.me",command=event1)
btn1.pack()
win.mainloop()
5.消息窗口tkMessageBox
tkMessageBox,用来显示消息和询问用户的选择。
· showinfo:显示消息。
· showwarning:警告消息。
· showerror:显示错误。
· askquestion:询问问题。
· askokcancel:确认或取消。
· askyesno:是或否。
· askretrycancel:询问要重新运行或取消。
try:
import Tkinter as tk
import tkMessageBox
except ImportError:
import tkinter as tk
import tkinter.messagebox as tkMessageBox
def hello():
tkMessageBox.showinfo("say,hello")
win=tk.Tk()
B1=tk.Button(win,text="say hello")
B1.pack()
win.mainloop()
6.输入框Entry
如何新增输入框Entry,并且取得用户所输入的数据。
try:
import Tkinter as tk
except ImportError:
import tkinter as tk
def event1():
t1 = entry1.get()
var_.set(t1)
root = tk.Tk()
entry1 = tk.Entry(root)
entry1.pack()
btn1 = tk.Button(root, text="press me", command=event1)
btn1.pack()
var_ = tk.StringVar()
label1 = tk.Label(root, text="hello", textvariable=var_)
label1.pack()
var_.set("New text")
root.mainloop()
7.绘图Canvas
介绍如何使用Canvas绘图的功能,并且依次展示画出圆饼图、显示图片等结果。在该Canvas绘图中比较特别的是bind函数,它可以获取鼠标相关的位置。运行的时候,在窗口上面通过鼠标的单击和拖动,可以体验到bind()的功能,可以绘制出图画。