tkinter GUI编程(2)

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模块可创建输入字符串、输入整数和输入浮点型三种对话框,分别使用askstringaskintegeraskfloat函数,有以下几个相同的可选参数:

Title  指定对话框标题

Prompt  指定对话框中显示的文字

Initialvalue  指定输入框的初始值

Filedialog模块创建的标准文件对话框有以下几个可选参数:

Filetypes   指定文件类型

Initialdir   指定默认目录

Initialfile   指定默认文件

Title   指定对话框标题

颜色选择对话框有以下几个可选参数:

Initialcolor   指定初始化颜色

Title   指定对话框标题

最后,还是贴个今天码的代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值