Python -- Gui编程 -- Tkinter的使用 -- 菜单与画布
1.菜单
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) windows界面开发
Python实现GUI简单的来说可以调用Tkinter库,这样一般的需求都可以实现,显示简单的windows窗口代码如下: python_gui.py 1 #!C:\Python27\python.e ...
- Python GUI编程--Tkinter
今天看到了GUI编程,书上推荐用wxPython,去官网上看了看,发现Windows的最高支持到2.7,我用的是3.4版本,咋办,用自带的库--Tkinter呗,它是Python的默认GUI库,几乎是 ...
- python GUI编程tkinter示例之目录树遍历工具
摘录 python核心编程 本节我们将展示一个中级的tkinter应用实例,这个应用是一个目录树遍历工具:它会从当前目录开始,提供一个文件列表,双击列表中任意的其他目录,就会使得工具切换到新目录中,用 ...
- Python -- Gui编程 -- Tkinter的使用 -- 基本控件
1.按钮 tkBtton.py import tkinter root = tkinter.Tk() btn1 = tkinter.Button(root, anchor=tkinter.E,\ te ...
- Python GUI编程(Tkinter)(一)
tk官网的教程学习: https://tkdocs.com/tutorial/firstexample.html 学习blog: https://www.cnblogs.com/aland-1415/ ...
- Python -- Gui编程 -- Tkinter的使用 -- 对话框消息框
1.消息框 tkMessageBox.py import tkinter from tkinter import messagebox def cmd(): global n global butto ...
- Python GUI编程(Tkinter)Ⅱ
Tkinter 组件 Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用.这些控件通常被称为控件或者部件. 目前有15种Tkinter的部件.我们提出这些部件以及一个简短的介 ...
- Python之GUI编程(Tkinter))
不足之处,还请海涵,请指出不足.本人发布过的文章,会不断更改,力求减少错误信息. 一.重要放在开头:模块 如出现这种错误 ModuleNotFoundError: No module named 'n ...
- python大法好——ython GUI编程(Tkinter)
Python GUI编程(Tkinter) Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的 ...
随机推荐
- Swift1.2与Xcode6.3 beta
Xcode6.3和Swift1.2都已经发布.这次发布增强了Swift编译器也给Swift增加了一些新的特性.详细内容可以看这里.这里主要关注比较重要的内容. 编译器的改进 Swift1.2的编译器更 ...
- 对比手机SLAM和机器人SLAM
陀螺仪?? IMU?? 加速度器与?? 人与机器 惯性定位与?? 步骤上对比Project Tango与SLAM
- opencv学习_4(opencv基础数据结构 CvPoint & CvSize & CvRect & CvScalar & CvArr & CvMat)
1:包含在cxcore/include/cxtypes.h头文件中. 2:CvPoint系列 -----(x,y) CvPoint:表示图像中的点 CvPoint2D32f:二维空间中的点 CvP ...
- OpenCV中GPU函数
The OpenCV GPU module is a set of classes and functions to utilize GPU computational capabilities. I ...
- Android-天气预报Demo-JSON数据解析
在上两篇博客,Android-解析JSON数据(JSON对象/JSON数组),Android-Gson解析JSON数据(JSON对象/JSON数组),是介绍了解析本地文件里面的JSON数据: Andr ...
- 深入研究java.lang.Process类
一.概述 Process类是一个抽象类(所有的方法均是抽象的),封装了一个进程(即一个执行程序). Process 类提供了执行从进程输入.执行输出到进程.等待进程完成.检查进程的退出状态 ...
- 项目笔记---WPF多语言方案
近期由于朋友邀请帮忙给一个开源的游戏“外挂”做一个I18N的解决方案,恰好也是WPF做的,之前有过相关经验,就忙了一个星期终于搞定了,已经提交给作者了,现在这里做一个分享. 这里分享下我个人Fork的 ...
- SQL SERVER 2014--内存表实现秒杀场景
===================================== 网上针对“秒杀”的解决方案很多,数据拆分化解热点,READPAST解决锁问题,应用程序排队限制并发等等很多方式,各有优缺点, ...
- [微信开发] 微信网页授权Java实现
功能:主要用于在用户通过手机端微信访问第三方H5页面时获取用户的身份信息(openId,昵称,头像,所在地等..)可用来实现微信登录.微信账号绑定.用户身份鉴权等功能. 开发前的准备: 1.需 ...
- NLayerAppV3--DDD之领域层
回顾:NLayerAppV3是一个使用.net 2.1实现的经典DDD的分层架构的项目. NLayerAppV3是在NLayerAppV2的基础上,使用.net core2.1进行重新构建的:它包含了 ...