import tkinter
class MyButton:
def __init__(self,root,canvas,label,type):
self.root = root
self.canvas = canvas
self.label = label
if type ==0:
button=tkinter.Button(root,text='DrawLine',command=self.DrawLine)
if type ==1:
button=tkinter.Button(root,text='DrawArc',command=self.DrawAre)
if type ==2:
button=tkinter.Button(root,text='DrawRec',command=self.DrawRec)
if type == 3:
button=tkinter.Button(root,text='DrawOval',command=self.DrawOval)
button.pack(side='left')
def DrawLine(self):
self.label.text.set('DrawLine')
self.canvas.SetStatus(0)
def DrawAre(self):
self.label.text.set('DrawAre')
self.canvas.SetStatus(1)
def DrawRec(self):
self.label.text.set('DrawRec')
self.canvas.SetStatus(2)
def DrawOval(self):
self.label.text.set('DrawOval')
self.canvas.SetStatus(3)
class MyCanvas:
def __init__(self,root):
self.status=0
self.draw=0
self.root=root
self.canvas=tkinter.Canvas(root,bg='white',width=600,height=480)
self.canvas.bind('<ButtonRelease-1>',self.Draw)
self.canvas.bind('<ButtonRelease-2>',self.Exit)
self.canvas.bind('<ButtonRelease-3>',self.Del)
self.canvas.bind('<Delete>',self.Del)
def Draw(self,event):
if self.draw==0:
self.x=event.x
self.y=event.y
self.draw=1
else:
if self.status==0:
self.canvas.create_line(self.x,self.y,event.x,event.y,bg='black')
self,draw=0
elif self.status==1:
self.canvas.create_arc(self.x,self.y,event.x,event.y)
self.draw=0
elif self.status==2:
self.canvas.create_retangle(self.x,self.y,event.x,event.y)
self,draw=0
elif self.status==3:
self.canvas.create_oval(self.x,self.y,event.x,event.y)
self.drwa=0
def Del(self,event):
items = self.canvas.find_all()
for item in items:
self.canvas.delete(item)
def Exit(self,event):
self.root.quit()
def SetStatus(self,status):
self.status=status
class MyLabel:
def __init__(self,root):
self.root=root
self.canvas = canvas
self.text=tkinter.StringVar()
self.text.set('DrawLine')
self.label=tkinter.Label(root,textvariable=self.text,fg='red',width=50)
self.label.pack(side='left')
root = tkinter.Tk()
canvas=MyCanvas(root)
label=MyLabel(root)
MyButton(root,canvas,label,0)
MyButton(root,canvas,label,1)
MyButton(root,canvas,label,2)
MyButton(root,canvas,label,3)
root.mainloop()
滴~ 今日打卡!继续昨天的tkinter GUI编程学习
1. 绘制图形
参数:
background 背景色
Borderwidth 边框宽度
Bitmap 位图
Foreground 前景色
Height 高度
Width 款年度
Image 图片
方法:
Create_arc 绘制圆弧
Create_bitmap 绘制位图,支持XBM
Create_image 绘制图片,支持GIF
Create_line 绘制直线
Create_oval 绘制椭圆
Create_polygon 绘制多边形
Create_rectangle 绘制举行
Create_text 绘制文字
Create_window 绘制窗口
Delete 删除绘制的图形
2. 事件处理:
参数:
sequence 绑定的事件
Func 绑定的事件处理函数
Add 可选参数,为空字符或+
className 绑定的类
其中,sequence绑定的事件,必须以<>包围,鼠标事件表示方式(鼠标事件中凡数字可替换成2(表示鼠标中键)或3(表示鼠标右键)):
<Button-1> 左键按下
<ButtonPress-1> 左键按下
<ButtonRelease-1> 左键释放
<B1-Motion> 按住左键拖动
<Enter> 双击左键
<Leave> 鼠标指正离开某一组件区域
<MouseWheel> 滚轮动作
键盘事件:
<KeyPress-A> 按下A键
<Alt-KeyPress-A> 按下Alt+A
<Control-KeyPress-A> 按下Control+
<Shift-KryPress-A> 按下shift+A
<Double-KeyPress-A> 快速按两下A
<Lock-KeyPress-A> Caps Lock打开后按下a键
注意:输入的字母区分大小写,如<KeyPress-A>则要按下大写A才触发事件
窗口事件:
Activate 当组件有不可用转为可用时触发
Configure 当组件大小改变时触发
Deactivate 当组件有可用转为不可用时触发
Destrooy 当组件被销毁时触发
Expose 当组件从被遮挡状态中暴露出来时触发
FocusIn 当组件获得焦点时触发
FocusOut 当组件失去焦点时触发
Map 当组件有隐藏状态变为现实状态时触发
Unmap 当组件有显示状态变为隐藏状态时触发
Property 当窗体的属性被删除或改变时触发
Visibility 当组件变为可视状态时触发
3. 对话框:
Default 指定消息框的按钮
Icon 指定消息框的图标
Message 指定消息框所显示的消息
Parent 指定消息框的父组件
Title 指定消息框的标题
Type 指定消息框的类型
4. 标准对话框
使用simpledialog模块、filedialog模块、colorchooser模块可分别创建标准输入对话框、文件打开和保存文件对话框及颜色选择对话框
其中,simpledialog模块可创建输入字符串、输入整数和输入浮点型三种对话框,分别使用askstring、askinteger和askfloat函数,有以下几个相同的可选参数:
Title 指定对话框标题
Prompt 指定对话框中显示的文字
Initialvalue 指定输入框的初始值
Filedialog模块创建的标准文件对话框有以下几个可选参数:
Filetypes 指定文件类型
Initialdir 指定默认目录
Initialfile 指定默认文件
Title 指定对话框标题
颜色选择对话框有以下几个可选参数:
Initialcolor 指定初始化颜色
Title 指定对话框标题
最后,还是贴个今天码的代码