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 的 ...
随机推荐
- day16(jdbc进阶,jdbc之dbUtils)
1.jdbc进阶 jdbc事务管理 jdbc中的事务管理其实就是交给了连接对象去管理.先写一个简单的事务管理 public class Demo01 { private static Connecti ...
- hibernate的一级缓存问题
1.证明一级缓存的问题 输出结果: 只发出一条查询语句 第二条查询语句没有执行 因为第一条查询语句缓存的存在 2. 移除缓存: 输出结果: 3.一级缓存的快照 就是对一级缓存的数据备份 保证数据库的 ...
- Java火焰图在Netflix的实践
转自 http://www.infoq.com/cn/news/2015/08/java-flamegraph 亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要 ...
- hdu 5685 Problem A (逆元)
题目 题意:H(s)=∏i≤len(s)i=1(Si−28) (mod 9973),求一个字符串 子串(a 位到 b 位的)的哈希值.这个公式便是求字符串哈希值的公式,(字符的哈希值 = 字符的ASC ...
- 如何关闭D10 启动后自动打开的 WelCome页
在快捷方式上 修改为 "C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\bds.exe" -pDelphi -np 最后增加 ...
- [leetcode] 14. Climbing Stairs
这道题leetcode上面写着是DP问题,问题是我一开始写了个简单的递归结果直接超时,所以没办法只好拿迭代来做了.题目如下: You are climbing a stair case. It tak ...
- 一、配置etcd数据库
etcd服务作为Kubernetes集群的主数据库,在安装Kubernetes各服务之前需要首先安装和启动. 1. 安装etcd yum -y install etcd 2. 修改etcd配置文件 ...
- 自适应XAML布局经验总结 (一)原则和页面结构设计
XAML布局回顾 Grid和StackPanel是核心布局,尤其以Grid最为重要. Grid是网格布局,XAML的设计者有可能参考了Html里的Table设计了Grid布局,但进行了改进.Html中 ...
- [LeetCode 题解] Spiral Matrix
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 题目链接 54. Spiral Matrix ...
- Facebook支撑万亿Post搜索背后的技术窥探
转自http://www.csdn.net/article/2013-10-29/2817333-under-the-hood-building-posts-search 近日,Facebook为po ...