简介:
什么是GUI呢? GUI是Graphical User Interface的首字母简写,翻译过来就是图像用户接口,简单理解就是,咋们window系统中窗口以及各种按钮、输入框、菜单栏等。 例如下图,开发GUI的目的就是为了让用户更好的使用软件和计算机。
学过java的小伙伴们应该都知道java里面的GUI编程,java中使用swing或者awt库。Python的GUI编程和java的基本一致,Python中使用Tkinter库中的那些组件,比如说:Label(标签)、Entry(输入框)、Button(按钮)、Text(文本框)来实现GUI编程。 这项技术已经不断被淘汰,但是学习总得学习一下的啦,接下来就使用真实案例和代码来学习一下吧。
主要内容:
1.标签label和按钮button的使用
import tkinter as tk
window = tk.Tk()
window.title("新的窗口")
window.geometry("1000x500")
var = tk.StringVar()
l = tk.Label(window, textvariable=var, bg="red", font=("Arial", 12), width=15,
height=2)
l.pack()
on_hit = False
def hit():
global on_hit
if on_hit == False:
on_hit = True
var.set("你点击我了")
else:
on_hit = False
var.set("")
b = tk.Button(window, text="hit me", width=15, height=2, command=hit)
b.pack()
window.mainloop()
效果图:
2.输入框entry的使用
import tkinter as tk
"""
entry和text控件的使用
"""
window = tk.Tk()
window.title("小把戏")
window.geometry("1000x500")
entry = tk.Entry(window, show=None)
entry.pack()
def insert_end():
e_content = entry.get()
t.insert("end", e_content)
def insert_point():
e_content = entry.get()
t.insert("insert", e_content)
b1 = tk.Button(window, text="end insert", command=insert_end)
b2 = tk.Button(window, text="point insert", command=insert_point)
b1.pack()
b2.pack()
t = tk.Text()
t.pack()
window.mainloop()
效果图:
3.列表Listbox的使用
import tkinter as tk
"""
列表的使用
"""
window = tk.Tk()
window.title("列表的使用")
window.geometry("1000x500")
var1 = tk.StringVar()
l = tk.Label(window, textvariable=var1, bg="yellow", width=15, height=2)
l.pack()
def job():
v = lb.get(lb.curselection())
var1.set(v)
b = tk.Button(window, text="你给我上去", command=job)
b.pack()
var2 = tk.StringVar()
var2.set(("清华大学", "北京大学", "复旦大学", "交通大学"))
lb =tk.Listbox(window, listvariable=var2)
list_item = [1, 2, 3, 4]
for m in list_item:
lb.insert("end", m)
lb.insert(1, "first")
lb.insert(2, "second")
lb.delete(2)
lb.pack()
window.mainloop()
效果图:
4. 单选按钮Radiobutton的使用
import tkinter as tk
"""
使用单选按钮
"""
window = tk.Tk()
window.title("抽奖系统")
window.geometry("1000x500")
var = tk.StringVar()
l = tk.Label(window, text=" ", bg="green", width=30, height=2)
l.pack()
def job():
l.config(text = "恭喜您抽到了" + var.get())
rb1 = tk.Radiobutton(window, text="礼物A", variable=var, value="MacBook", command=job)
rb1.pack()
rb2 = tk.Radiobutton(window, text="礼物B", variable=var, value="iphone", command=job)
rb2.pack()
rb3 = tk.Radiobutton(window, text="礼物C", variable=var, value="ipad", command=job)
rb3.pack()
window.mainloop()
效果图:
5.尺度scale的使用
import tkinter as tk
"""
scale的使用
"""
window = tk.Tk()
window.title("调节音量")
window.geometry("1000x500")
l = tk.Label(window, bg="yellow", width=30, height=2, text="")
l.pack()
def job(v):
l.config(text="现在的音量是" + v)
scale = tk.Scale(window, length=500, orient=tk.HORIZONTAL,from_ = 0,to=100,
tickinterval=10, resolution=0.01, showvalue=1, command=job)
scale.pack()
window.mainloop()
效果图:
6.多选按钮Checkbutton的使用
import tkinter as tk
"""
多选按钮的使用
"""
window = tk.Tk()
window.title("练习多选按钮")
window.geometry("1000x500")
var1 = tk.IntVar()
var2 = tk.IntVar()
l = tk.Label(window, bg="yellow", text="", width=20, height=2)
l.pack()
def job():
if var1.get() == 1 and var2.get() == 0:
l.config(text="I only love C++")
elif var1.get() == 0 and var2.get() == 1:
l.config(text="I only love Python")
elif var1.get() == 0 and var2.get() == 0:
l.config(text="I don't love either")
else:
l.config(text="I both love them")
cb1 = tk.Checkbutton(window, text="C++", variable=var1, onvalue=1, offvalue=0, command=job)
cb2 = tk.Checkbutton(window, text="Python", variable=var2, onvalue=1, offvalue=0, command=job)
cb1.pack()
cb2.pack()
window.mainloop()
效果图:
7.画布canvas的使用
import tkinter as tk
"""
画布的使用
"""
window = tk.Tk()
window.title("画布的使用")
window.geometry("1000x500")
canvas = tk.Canvas(window, bg="blue", height=400, width=700)
image_file = tk.PhotoImage(file="F:\\研究生0年级\\learnAI\\a.png")
image = canvas.create_image(10, 10, anchor="nw", image = image_file)
x0, y0, x1, y1 = 50, 50 ,80, 80
line = canvas.create_line(x0, y0, x1, y1)
circular = canvas.create_oval(x0, y0, x1, y1, fill="red")
arc = canvas.create_arc(x0+30, y0+30, x1+30, y1+30, start=0, extent=120)
rect = canvas.create_rectangle(100, 30, 100+20, 30+20)
canvas.pack()
def move():
canvas.move(rect, 0, 20)
b = tk.Button(window, text="移动", command=move)
b.pack()
window.mainloop()
效果图:
8.菜单栏menubar的使用
import tkinter as tk
"""
menubar菜单栏
"""
window = tk.Tk()
window.title("菜单栏的使用")
window.geometry("1000x500")
l = tk.Label(window, text="", width=50, height=5, bg="yellow")
l.pack()
counter = 0
def job():
global counter
l.config(text="do %d" %counter)
counter += 1
menubar = tk.Menu(window)
filemenu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label="文件", menu=filemenu)
filemenu.add_command(label="新建", command=job)
filemenu.add_command(label="打开", command=job)
filemenu.add_command(label="保存", command=job)
filemenu.add_separator()
filemenu.add_command(label="退出", command=window.quit)
universitymenu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label="大学", menu=universitymenu)
universitymenu.add_command(label="清华大学", command=job)
universitymenu.add_command(label="北京大学", command=job)
universitymenu.add_command(label="浙江大学", command=job)
second_menu = tk.Menu(filemenu)
filemenu.add_cascade(label="导入", menu=second_menu, underline=0)
second_menu.add_command(label="你好",command=job)
window.config(menu=menubar)
window.mainloop()
效果图:
9. 框架frame的使用
import tkinter as tk
"""
框架frame的使用
"""
window = tk.Tk()
window.title("其实就是划分区域呗")
window.geometry("1000x500")
l = tk.Label(text="on the window").pack()
frm = tk.Frame(window)
frm.pack()
frm1 = tk.Frame(frm,)
frm1.pack(side="left")
frm2 = tk.Frame(frm,)
frm2.pack(side="right")
tk.Label(frm1, text="左侧标签1").pack()
tk.Label(frm1, text="左侧标签2").pack()
tk.Label(frm2, text="右侧标签").pack()
window.mainloop()
效果图:
10. 弹窗messagebox的使用
import tkinter as tk
import tkinter.messagebox
from tkinter import messagebox
"""
弹窗的使用
"""
window = tk.Tk()
window.title("弹窗的使用")
window.geometry("1000x500")
def job():
tkinter.messagebox.showinfo(title="Hi", message='hahahah')
b = tk.Button(window, text="点我试试", command=job).pack()
window.mainloop()
效果图:
11.组件的三种放置方式
(1)pack
import tkinter as tk
"""
pack、gird、place三种放置方式
"""
window = tk.Tk()
window.title("放置组件的三种方法")
window.geometry("1000x500")
tk.Label(window, text="上面").pack(side="top")
tk.Label(window, text="下面").pack(side="bottom")
tk.Label(window, text="左面").pack(side="left")
tk.Label(window, text="右面").pack(side="right")
window.mainloop()
效果图:
(2)grid
import tkinter as tk
"""
pack、grid、place三种放置方式
"""
window = tk.Tk()
window.title("放置组件的三种方法")
window.geometry("1000x500")
for i in range(4):
for j in range(3):
tk.Label(window, text="love").grid(row=i, column=j, padx=50, pady=50)
window.mainloop()
效果图:
(3)place
import tkinter as tk
"""
pack、grid、place三种放置方式
"""
window = tk.Tk()
window.title("放置组件的三种方法")
window.geometry("1000x500")
tk.Label(window, text="啊啊啊啊").place(x=100, y=100, anchor="nw")
window.mainloop()
效果图:
附录:以上内容参考自——莫烦Python,有用的话,记得点赞+收藏+关注!本文有问题的地方也恳请指正!!!下一篇将介绍如何使用tkinter做一个真实案例。
|