tkinter GUI编程(2)

来源:互联网 发布:淘宝上买dnf账号 编辑:程序博客网 时间:2024/05/20 22:27
import tkinterclass 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=statusclass 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   指定对话框标题

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

原创粉丝点击