Python -- Gui编程 -- Tkinter的使用 -- 菜单与画布
2014-05-04 16:48
891 查看
1.菜单
tkMenu.py
2.画布
tkCanvas.py
3.简单几何画板的实现
tkDraw.py
tkMenu.py
import tkinter root = tkinter.Tk() menu = tkinter.Menu(root) submenu = tkinter.Menu(menu, tearoff=0) submenu.add_command(label='Open') submenu.add_command(label='Save') submenu.add_command(label='Close') menu.add_cascade(label='File', menu=submenu) submenu = tkinter.Menu(menu, tearoff=0) submenu.add_command(label='Copy') submenu.add_command(label='Paste') submenu.add_separator() submenu.add_command(label='Cut') menu.add_cascade(label='Edit', menu=submenu) submenu = tkinter.Menu(menu, tearoff=0) submenu.add_command(label='About') menu.add_cascade(label='Help', menu=submenu) root.config(menu=menu) root.mainloop()
2.画布
tkCanvas.py
import tkinter root = tkinter.Tk() canvas = tkinter.Canvas(root, width=600, height=480, bg='white') img = tkinter.PhotoImage(file = 'smile.gif') canvas.create_image(300, 50, image=img) canvas.create_text(300, 75, text='Use Canvas', fill='blue') canvas.create_text(302, 77, text='Use Canvas', fill='gray') canvas.create_polygon(290, 114, 316, 114, 330, 130, 310, 146, 284, 146, 270, 130) canvas.create_oval(280, 120, 320, 140, fill='white') canvas.create_line(250, 130, 350, 130) canvas.create_line(300, 100, 300, 160) canvas.create_rectangle(90, 190, 510, 410, width=5) canvas.create_arc(100, 200, 500, 400, start=0, extent=240, fill='pink') canvas.create_arc(103, 203, 500, 400, start=241, extent=118, fill='red') canvas.pack() root.mainloop()
3.简单几何画板的实现
tkDraw.py
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='Draw Line', command=self.DrawLine) elif type == 1: button = tkinter.Button(root, text='Draw Arc', command=self.DrawArc) elif type == 2: button = tkinter.Button(root, text='Draw Rec', command=self.DrawRec) else: button = tkinter.Button(root, text='Draw Oval', command=self.DrawOval) button.pack(side = 'left') def DrawLine(self): self.label.text.set('Draw Line') self.canvas.SetStatus(0) def DrawArc(self): self.label.text.set('Draw Arc') self.canvas.SetStatus(1) def DrawRec(self): self.label.text.set('Draw Rectangle') self.canvas.SetStatus(2) def DrawOval(self): self.label.text.set('Draw Oval') 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.pack() self.canvas.bind('<ButtonRelease-1>', self.Draw) self.canvas.bind('<Button-2>', self.Exit) self.canvas.bind('<Button-3>', self.Del) self.canvas.bind_all('<Delete>', self.Del) self.canvas.bind_all('<KeyPress-d>', self.Del) self.canvas.bind_all('<KeyPress-e>', self.Exit) 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) 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_rectangle(self.x, self.y, event.x, event.y) self.draw = 0 else: self.canvas.create_oval(self.x, self.y, event.x, event.y) self.draw = 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('Draw Line') 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()
相关文章推荐
- Python -- Gui编程 -- Tkinter的使用 -- 对话框消息框
- Python GUI编程之 Tkinter 菜单
- Python -- Gui编程 -- Qt库的使用 -- 菜单与对话框
- Python -- Gui编程 -- Tkinter的使用 -- 基本控件
- python GUI编程(Tkinter)简单使用
- Python -- Gui编程 -- Tkinter的使用 -- 对话框消息框
- 使用Tkinter做python的GUI编程
- python GUI编程(Tkinter)(高级教程)
- python使用Tkinter编写GUI
- python3.6 +tkinter GUI编程 实现界面化的文本处理工具
- python学习笔记——Tkinter GUI编程——简介
- Python GUI编程(Tkinter)
- Python -- Gui编程 -- Qt库的使用 -- 布局与基本控件
- Python GUI编程--Tkinter
- python GUI编程(Tkinter)
- python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
- Python GUI tkinter编程
- Python GUI编程(Tkinter)
- 【pythonGUI专题】tkinter库的学习与使用(一)
- 鱼c笔记——Python的GUI编程(二):Tkinter的两大常用组件Label和Button