1.认识tinkter
1.1 tinkter版本
import tkinter
print(tkinter.TkVersion)
1.2 建立窗口
# 自定义Tk对象
tk = Tk()
root.mainloop()
1.3 窗口相关方法
例如:
from tkinter import *
tk = Tk()
tk.title(" ") # 窗口标题
tk.geometry("240x320") # 窗口大小
# tk.configure(bg='#ffffff')
tk.configure(bg='write') # 窗口背景颜色
tk.mainloop()
1.4 窗口位置
from tkinter import *
tk = Tk()
tk.geometry("240x320+100+200") # 以屏幕左上角为原点,横向100个像素点,纵向200个像素点。
tk.mainloop()
获取屏幕大小:
x = tk.winfo_screenwidth() # 屏幕宽度
y = tk.winfo_screenheight() # 屏幕高度
1.5 加强版tkinter模块
tkinter在后来也推出了加强版的模块,称为tkinter.ttk,有时简称ttk,这个模块中有17个Widget。
下列是原本tkinter有的Widget:
(1)Button
(2)Checkbutton
(3)Entry
(4)Frame
(5)Label
(6)LabelFrame
(7)MenuButton
(8)Radiobutton
(9)Scale
(10)Scrollbar
(11)PanedWindow
下列是ttk模块新增的Widget。
(1)Combobox
(2)Notebook
(3)Progressbar
(4)Separator
(5)Sizegrip:可以拖曳最上层窗口右下方更改最上层窗口的大小。
(6)Treeview
导入方式:
from tkinter import ttk
ttk界面更美观,但与tk没有完全兼容。
1.6 Widget属性
Dimensions:大小
Colors:颜色
Fonts:字形
Anchor:锚(位置参考点)
Relief styles:属性边框
Bitmaps:显示位图
Cursors:鼠标外形
1.7 Widget方法
设计控件时会看到下列常用的共同方法。
- Configuration
(1)config(option=value):Widget属性可以在建立时设置,也可以在程序执行时使用config( )重新设置
(2)cget(“option”):取得option参数值
(3)keys( ):可以用此方法获得所有该Widget的参数 - Event Processing
(1)mainloop( ):让程序继续执行,同时进入等待与处理窗口事件
(2)quit( ):Python Shell窗口结束,但是所建窗口继续执行
(3)update( ):更新窗口画面 - Event callbacks
(1)bind(event,callback):事件绑定
(2)unbind(event):解除绑定 - Alarm handlersafter(time,callback):间隔指定时间后调用callback( )方法
2.标签Label
2.1 基本方法
Label( )方法的第一个参数是父对象,表示这个标签将建立在哪一个父对象(可想成父窗口或称容器)内。下列是Label( )方法内其他常用参数。 (1)anchor:如果空间大于所需时,控制标签的位置,默认是CENTER(居中)
方位表示如图所示:
from tkinter import *
root = Tk()
root.title("ch2_5")
label = Label(root, text="ne代表右上角", fg="blue", bg="yellow", height=20, width=50, anchor="ne") # anchor的参数可以是大写
label.pack()
root.mainloop()
程序运行结果:
(2)bg或background:背景色彩。
(3)bitmap:使用默认图标当作标签内容。
(4)borderwidth或bd:标签边界宽度,默认是1。
(5)compound:可以设置标签内含图像和文字时,彼此的位置关系。
left:图像在左。right:图像在右。top:图像在上。bottom:图像在下。center:文字覆盖在图像上方。
(6)cursor:当鼠标光标在标签上方时的外形。
(7)fg或foreground:前景色彩。即字体颜色。
(8)font:可选择字形、字形样式与大小。
font参数用于设置文字字形,这个参数包含下列内容。
(1)字形family:如Helvetica、Times等,读者可以进入Word内参考所有系统字形。
(2)字号size:单位是像素。
(3)weight:例如bold、normal。
(4)slant:例如italic、roman,如果不是italic则是roman。
(5)underline:例如True、False。
(6)overstrike:例如True、False。
(9)height:标签高度,单位是字符。
(10)image:标签以图像方式呈现。
(11)justify:存在多行文本时最后一行的对齐方式,可取值有LEFT/CENTER/RIGHT(靠左/居中/靠右),默认是居中对齐。
(12)padx/pady:标签文字与标签区间的间距,单位是像素。
(13)relief:默认是relief=FLAT,可由此控制标签的外框。
(14)text:标签内容,如果有“\n”则可输入多行文字。
(15)textvariable:可以设置标签以变量方式显示。
(16)underline:可以设置第几个文字有下画线,从0开始算起,默认是-1,表示无下画线。
(17)width:标签宽度,单位是字符。
(18)wraplength:本文到多少宽度后换行,单位是像素。
2.2 图像PhotoImage
显示gif文件或者png格式图片,不能显示jpg格式图片
from tkinter import *
tk = Tk()
html_gif = PhotoImage(file="picture.gif")
label = Label(tk, image=html_gif)
label.pack()
tk.mainloop()
如果需要显示jpg图片,需要借助Image模块和ImageTk模块,且需要安装依赖库pillow
如下程序显示jpg格式图片:
from tkinter import *
from PIL import Image, ImageTk
tk = Tk()
image = Image.open("pictrue.jpg")
pictrue = ImageTk.PhotoImage(image)
label = Label(tk, image=picture)
label.pack()
tk.mainloop()
可以结合compound参数使文字和图像共存。
2.3 Widget的共同方法config()
Widget控件在建立时可以直接设置对象属性,若是部分属性未建立,未来在程序执行时如果想要建立或是更改属性可以使用config( )方法。此方法内属性设置的参数用法与建立时相同。
设计一个计数器,自动每秒计数,按键归零。
from tkinter import *
count = 0
def counter(label):
def counting():
global count
label.config(text=str(count))
label.after(1000, counting)
count = count + 1
counting()
def clear():
global count
count = 0
tk = Tk()
label = Label(tk, bg="yellow", fg="blue", width=10, height=5, font="黑体 20")
label.pack()
button = Button(tk, text="重新计时", width=10, height=2, command=clear)
button.pack()
counter(label)
tk.mainloop()