(1)Button组件
创建和显示:对象=Button(窗口对象,text=‘button组件显示的文本’,command=单击按钮调用的对象)
对象.pack()
利用button组件显示图片:
bm=(hotoImage(file=’’)
b=Button(win,text=’’,command=单击按钮调用的对象,image=bm)
b.bm=bm
设置button组件的大小:width用于设置宽度,height用于设置高度
from tkinter import*
from tkinter.messagebox import*
win=Tk()
win.title('我的窗口')
def callback():
showinfo(title='',message='点我干嘛')
b=Button(win,text='点我啊',command=callback,width=100,height=50)
b.pack()
bm=PhotoImage(file='D:\python3\Lib\idlelib\Icons\idle_48.gif')
a=Button(win,text='点我啊',command=callback,image=bm)
a.bm=bm
a.pack()
win.mainloop()
bitmap | 指定按钮上显示的位图 |
---|---|
compound | 指定文本与图像如何在Label上显示,缺省为None,当指定image/bitmap时,文本将被覆盖,只显示图片(left:图像居左,right:图像居右,top:图像居上,bottom:图像居下,center:图像居中) |
wraplength | 指定多少行后开始换行,用于多行显示文本 |
bg | 设置背景颜色 |
fg | 设置前景颜色 |
bd | 设置按钮的边框大小,缺省为1或2个像素 |
state | 设置组件状态,正常(NORMAL),激活(ACTIVE),禁用(DISABLED) |
from tkinter import*
from tkinter.messagebox import*
win=Tk()
win.title('我的窗口')
b1=Button(win,text='粗边框的按钮',bd=5)
b1.pack()
b2=Button(win,text='不能点击的按钮',state=DISABLED)
b2.pack()
win.mainloop()
(2)Canvas画布组件
①创建和显示Canvas组件:对象=Canvas=(窗口,选项,选项,……)
bd | 指定边框的宽度,单位是像素 |
---|---|
bg | 背景颜色 |
confine | 指定画布在滚动区域外是否可以动,默认为True不可滚动 |
height | 画布高度 |
width | 画布宽度 |
highlightcolor | 选中画布时的背景色 |
relief | 指定画布的边框样式,可选值包括SUNKEN,RAISED,GROOVE,RIDGE |
scrollregion | 指定画布的滚动区域的元组(w,n,e,s) |
②显示:对象.pack()
③绘制线条create_line(x0,y0,x1,y1,选项)
arrow | 指定直线是否使用箭头(none没有箭头,first起点有箭头,last终点有箭头,both两端都有箭头) |
---|---|
arrowshape | 设置箭头的形状,由三个整数组成,分别代表箭头的填充长度,箭头长度和宽度,如:arrowshape=‘40,40,10’ |
fill | 指定线段的颜色 |
dash | 指定线段为虚线 |
④绘制矩形:create_rectangle(矩形左上方的x坐标,左上方的y坐标,右下方的x坐标,右下方的y坐标,选项……)
outline | 指定边框的颜色 |
---|---|
dash | 指定边框为虚线 |
stipple | 使用指定的自定义画刷填充矩形 |
⑤绘制弧create_arc(弧外框矩形左上角的x坐标,y坐标,右下角的x坐标,y坐标,选项……)
start | 起始弧度 |
---|---|
extent | 终止弧度 |
⑥绘制多边形create_polygon(顶点1的x坐标,y坐标,顶点2的x坐标,y坐标……)
smooth | 指定多边形的平滑程度,等于0是折线,等于1为平滑曲线 |
---|---|
⑦绘制椭圆create_oval(包裹椭圆左上角x坐标,y坐标,椭圆的长度,椭圆的宽度,选项……)
from tkinter import*
win=Tk()
win.title('我的窗口')
cv=Canvas(win,bg='white',width=300,height=300)
cv.create_line(10,10,30,80,width=2,dash=7)
cv.create_rectangle(100,100,120,120,outline='blue',fill='yellow',width=2)
cv.create_arc(250,250,280,280,outline='black',fill='red',width=2,start=0,extent=359)
cv.create_polygon(100,5,0,80,200,80,outline='blue',fill='pink',width=2)
cv.create_oval(0,200,150,80,width=2,outline='black',fill='gray')
cv.pack()
win.mainloop()