tk画图
Page 387 of chapter 7
"""
6-23 page 343 play media files
"""
def odd():
funcs=[]
for c in 'abcdwe':
funcs.append((lambda:c))
return funcs def odd2():
funcs=[]
for c in 'abcdwe':
funcs.append((lambda c=c:c))
return funcs def odd1():
funcs=[]
for c in 'abcdwe':
funcs.append(c)
return funcs for func in odd():
print(func())
print('force to remenber'+'#'*30)
for func in odd2():
print(func()) listt=[]
listt=odd1()
print listt
"""
programming pytyon page 422
pop up three new windows ,with style
desctory() kill one window,quit kill all windows and app
top-level window have litle,icon,iconify/deiconify and protocol for wn events
there always is an application root window,whether by default or created as an
explicit tk() object;all top-level windows are containters but they are never
packed.gridded;toplevel is like Frame,but a new window,and can have a menu;
"""
from Tkinter import *
root =Tk()
trees =[('the larch!','light blue'),('the pine!','light green'),('the giant redwood','red')] for (tree,color) in trees:
win = Toplevel(root)
win.title('sing...')
win.protocol('WM_DELETE_WINDOW',lambda:None) #ignore close,so no meaning to close win by X
win.iconbitmap('C:\\Users\\xlian7164584\\Documents\\GitHub\\R_D\\bg.ico') msg =Button(win,text=tree,command=win.destroy)
msg.pack(expand=YES,fill=BOTH)
msg.config(padx=10,pady=10,bd=10,relief=RAISED)
msg.config(bg='black',fg=color,font=('times',30,'bold italic'))
root.title('lxk demo with three win')
Label(root,text='main win',width=30).pack()
Button(root,text='quit all',command=root.quit).pack()
root.mainloop()
1. win.protocol('WM_DELETE_WINDOW',lambda:None) #ignore close,so no meaning to close win by X
如果设置protocol属性为None ,所以我们无法通过X关闭3个窗口
2.关掉一个窗口和对应的子窗口,使用destroy;关掉所有的窗口,使用quit
3.title设置title,iconbitmap设定图标
4.如果设定win=Toplevel(),并且还没有设定Tk root窗口,则此句将默认生成TK root作为Toplevel的主窗口。但是,我们
root=tk(),以上调用将产生产生一个root主窗口
多个按钮放入对话框中
退出按钮:
"""
a quit button that verifies exit requests to reuse,
attach an instance to other GUIS,and repack as desired
"""
from Tkinter import *
from tkMessageBox import askokcancel class Quitter(Frame):
def __init__(self,parent=None):
Frame.__init__(self,parent)
self.pack()
wid =Button(self,text ='Quit',fg='blue',command =self.quit)
wid.pack(side =LEFT,expand =YES,fill=BOTH)
def quit(self):
ans =askokcancel('verify exit',"readlly quit")
if ans:
Frame.quit(self)
if __name__ =='__main__':
Quitter().mainloop()
对话框
"""
define a name:callback demos table
"""
from tkFileDialog import askopenfilename
from tkColorChooser import askcolor
from tkMessageBox import askquestion,showwarning
from tkSimpleDialog import askfloat demos ={
'open':askopenfilename,
'Color':askcolor,
'Query':lambda:askquestion('waring','you type q\n confirm?'),
'Error':lambda:showerror('error!',"he is here,lxk"),
'input':lambda:askfloat('entry','entry random float num')
}
组合对话框:
"create a bar of simple buttons that launch dialog demos"
from Tkinter import *
from dialogTable import demos
from quitter import Quitter root =Tk() class Demo(Frame):
def __init__(self,parent=None,**options):
Frame.__init__(self,parent,**options)
self.pack(fill=BOTH) #if fill no setting ,
Label(self,text ="basic demos",fg='black').pack()
for (key,value) in demos.items():
Button(self,text=key,fg="blue",command=value).pack(expand =YES,fill=BOTH)
Quitter(self).pack(side=TOP,fill=BOTH) if __name__ =='__main__':
#maindlg=Toplevel(root)
#maindlg.title('another dlg')
#maindlg.iconbitmap('C:\\Users\\xlian7164584\\Documents\\GitHub\\R_D\\bg.ico')
#Button(maindlg,text='botton at maingld').pack() root.title('demo dlg')
root.iconbitmap('C:\\Users\\xlian7164584\\Documents\\GitHub\\R_D\\bg.ico')
Demo().mainloop()
把main函数中注释打开,则:
demo dlg是主窗口,关闭则所有窗口关闭。
按钮的回调函数没有传入参数,如果需要传额外的数据到handler,我们需要打包给一个能够保存或者记住这些数据的对象,这个对象完成到实际handler的调用。如何绕过这个限制
答案:使用lambda表达式。
"create a bar of simple buttons that launch dialog demos"
from Tkinter import *
from dialogTable import demos
from quitter import Quitter root =Tk() class Demo(Frame):
def __init__(self,parent=None,**options):
Frame.__init__(self,parent,**options)
self.pack(fill=BOTH) #if fill no setting ,
Label(self,text ="basic demos",fg='black').pack()
for key in demos:
func = (lambda key =key:self.printit(key))
Button(self,text=key,fg="blue",command=func).pack(expand =YES,fill=BOTH)
Quitter(self).pack(side=TOP,fill=BOTH)
def printit(self,name):
print (name,'returns ==>',demos[name]()) if __name__ =='__main__':
root.title('demo dlg')
root.iconbitmap('C:\\Users\\xlian7164584\\Documents\\GitHub\\R_D\\bg.ico')
Demo().mainloop()
Check demos
"""
create a bar of check buttons that run dialog demo
"""
from Tkinter import *
from dialogTable import demos
from quitter import Quitter class Demo(Frame):
def __init__(self,parent =None,**options):
Frame.__init__(self,parent=None,**options)
self.pack()
self.tools()
Label(self,text ='check demos').pack()
self.vars = []
for key in demos:
var= IntVar()
Checkbutton(self,text =key,variable =var,command=demos[key]).pack(side =LEFT)
self.vars.append(var)
def report(self):
for var in self.vars:
print(var.get())
print()
def tools(self):
frm=Frame(self)
frm.pack(side =RIGHT)
Button(frm,text ='state',command =self.report).pack(fill =X)
Quitter(frm).pack(fill=X) if __name__=='__main__':
Demo().mainloop()
Radiocheck
"create a group of radio buttons that launch dialog demos" from Tkinter import *
from dialogTable import demos
from quitter import Quitter class Demo(Frame):
def __init__(self,parent =None,**options):
Frame.__init__(self,parent,**options)
self.pack()
Label(self,text ='radio demos').pack(side =TOP)
self.var = StringVar()
for key in demos:
Radiobutton(self,text =key,command=self.onPress,variable =self.var,
value =key).pack(anchor =NW)
self.var.set(key) #select last to start
Button(self,text ='state',command=self.report).pack(fill=X)
Quitter(self).pack(fill=X)
def onPress(self):
pick = self.var.get()
print('you pressed',pick)
print('result:',demos[pick]())
def report(self):
print(self.var.get())
if __name__=='__main__':
Demo().mainloop()
scale check
"create two linked scales used to launch dialog demos" from Tkinter import *
from dialogTable import demos
from quitter import Quitter class Demo(Frame):
def __init__(self,parent=None,**options):
Frame.__init__(self,parent,**options)
self.pack()
Label(self,text ='scale demos').pack()
self.var = IntVar()
Scale(self,label ='pick demo num',
command=self.onMove,
variable=self.var,
from_=0,to=len(demos)-1).pack()
Scale(self,label='pick demo number',
command=self.onMove,
variable=self.var,
from_=-100,to=len(demos)-1+100,
length=200,tickinterval=10,resolution=30,
showvalue=YES,orient='horizontal').pack()
Quitter(self).pack(side=RIGHT)
Button(self,text ='run demo',command=self.onRun).pack(side =LEFT)
Button(self,text ='state',command=self.report).pack(side=RIGHT)
def onMove(self,value):
print('in move',value)
def onRun(self):
pos = self.var.get()
print('you picked',pos)
demo=list(demos.values())[pos]
print(demo()) def report(self):
print self.var.get()
if __name__ =='__main__':
print(list(demos.keys()))
Demo().mainloop()
DemoALL
"""
4 demo class components(subframes) on one window;
there are 5 quitter buttons on this one window too,and each kills entire gui
gui can be resued as frames in container,indenpendent windown or process
"""
#-*- coding: utf-8 -*-
from Tkinter import *
from quitter import Quitter
demosModules =['demoDlg','demoCheck','demoRadio','demoScale']
parts =[]
def addComponents(root):
for demo in demosModules:
module=__import__(demo)
part =module.Demo(root)
part.config(bd=2,relief=GROOVE)
part.pack(side=LEFT,expand=YES,fill=BOTH)
parts.append(part)
def dumpState():
for part in parts:
print(part.__module__+':')
if hasattr(part,'report'):
part.report()
else:
print('none') root=Tk()
root.title('主框架'.decode('gbk'))
Label(root,text ='多个框结构实例'.decode('gbk'),bg='white').pack()
Button(root,text ='状态'.decode('gbk'),command=dumpState).pack(fill=X)
Quitter(root).pack(fill=X)
addComponents(root)
root.iconbitmap('C:\\Users\\xlian7164584\\Documents\\GitHub\\R_D\\bg.ico')
root.mainloop()
Buttonbar
"""
check and radio button bar classes for apps that fetch state later
pass a list of options ,call state(),variable details automated
""" from Tkinter import *
class Checkbar(Frame):
def __init__(self,parent= None,picks =[],side=LEFT,anchor=W):
Frame.__init__(self,parent)
self.vars=[]
for pick in picks:
var = IntVar()
chk =Checkbutton(self,text =pick,variable =var)
chk.pack(side=side,anchor=anchor,expand=YES)
self.vars.append(var)
def state(self):
return [var.get() for var in self.vars]
class Radiobar(Frame):
def __init__(self,parent=None,picks=[],side=LEFT,anchor=W):
Frame.__init__(self,parent)
self.var=StringVar()
self.var.set(picks[0])
for pick in picks:
rad =Radiobutton(self,text =pick,value=pick,variable=self.var)
rad.pack(side=side,anchor=anchor)
def state(self):
return self.var.get() if __name__=='__main__':
root=Tk()
lng=Checkbar(root,['python','C#','Jave','C++'])
gui=Radiobar(root,['Win','x86','mac'],side =TOP,anchor=NW)
tgl=Checkbar(root,['All']) gui.pack(side=LEFT,fill=Y)
lng.pack(side=TOP,fill=X)
tgl.pack(side=LEFT)
lng.config(relief=GROOVE,bd=2)
gui.config(relief=RIDGE,bd=2) def allstates():
print(gui.state(),lng.state(),tgl.state())
from quitter import Quitter
Quitter(root).pack(side=RIGHT)
Button(root,text ='Peek',command=allstates).pack()
root.mainloop()
ButtonPic
from Tkinter import *
from glob import glob
import demoCheck
import random
gifdir='C:\\Users\\xlian7164584\\Documents\\GitHub\\R_D\\gif\\' def draw():
name,photo =random.choice(images)
lbl.config(text =name)
pix.config(image=photo) root =Tk()
lbl=Label(root,text ='none',bg='blue',fg='red')
pix=Button(root,text ='press me',command=draw,bg='white')
lbl.pack(fill=BOTH)
pix.pack(pady=10)
demoCheck.Demo(root,relief=SUNKEN,bd=2).pack(fill=BOTH) files=glob(gifdir+'*.gif')
images=[(x,PhotoImage(file=x)) for x in files]
print files
root.mainloop()
ListBox
"a simple customizable scrolled listbox component"
from Tkinter import * class ScrolledList(Frame):
def __init__(self,options,parent=None):
Frame.__init__(self,parent)
self.pack(expand=YES,fill=BOTH) # make me expandable
self.makeWidgets(options)
def handleList(self,event):
index = self.listbox.curselection() # on list double-click
label = self.listbox.get(index) # fetch selection text
self.runCommand(label) # and call action here or get(ACTIVE) def makeWidgets(self,options):
sbar=Scrollbar(self)
list=Listbox(self,relief=SUNKEN)
sbar.config(command=list.yview) #xlink sbar and list
list.config(yscrollcommand=sbar.set,fg='blue') # move one moves other
sbar.pack(side=RIGHT,fill=Y) #pack first=clip last
list.pack(side=LEFT,expand=YES,fill = BOTH) # list clipped first
pos=0
for label in options: # add to listbox
list.insert(pos,label) # or insert(END,label)
pos+=1 # or enumerate(options)
#list.config(selectmode=SINGLE,setgrid=1) # select ,resize modes
list.bind('<Double-1>',self.handleList) # set event handler
list.bind('<Button-1>',self.handleLeftClick) # mouse button clicks
list.bind('<KeyPress>',self.onkeyPress) # all key press
list.bind('<B1-Motion>',self.onLeftDrag) #click and draw
self.listbox=list
def runCommand(self,selection):
print('you selected:',selection) def onkeyPress(self,event):
print('got key press:',event.char) def handleLeftClick(self,event):
print('mouse button press')
self.showPosEvent(event) def onLeftDrag(self,event):
print('got left mouse button draw')
self.showPosEvent(event) def showPosEvent(self,event):
print('widget =%s X=%s, Y=%s' % (event.widget,event.x,event.y)) if __name__ =='__main__':
options =(('listbox and event %s' % x) for x in range(20))
ScrolledList(options).mainloop()
tk画图的更多相关文章
- python实验一:画图
题目:画图,学用rectangle画方形. rectangle(int left, int top, int right, int bottom) 参数说明:(left ,top )为矩形的左上坐标, ...
- perl tk说明
介绍: perl/Tk(也被称为pTK) 是一个模块和代码的收集,尝试 简单的配置Tk 8 部件工具包到强大的词素文文字, 动态内存,I/O, 和面向对象,它是一种解释脚本语言 来制作部件和程序 使用 ...
- seaborn(matplotlib)画图,linux系统中文乱码等问题解决
data = pd.read_json(json.dumps(issue_dpl)) # set pic size plt.figure(figsize=(13, 5)) sns.set_style( ...
- pyecharts画图总结
pyecharts 画图归纳 将本地文件导入到Pyecharts: test = open(filename, 'r') data = test.readlines() test.close() 如果 ...
- *#【Python】【基础知识】【模块】【tkinter】【学用tkinter画图/制作窗口】
Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 . Tk ...
- 十二、GUI设计-画图程序
"""小小画笔""" from tkinter import *from tkinter.filedialog import *from t ...
- Ubuntu 16.10 安装KolourPaint 4画图工具
KolourPaint 4画图工具简单实用,可以绘画.视频处理和图标编辑: • 绘画:绘制图表和“手绘” • 视频处理:编辑截图和照片;应用特效 • 图标编辑:绘画剪贴和标识透明化 1.在Ubuntu ...
- import matplolib 时出现"This probably means that tk wasn't installed properly."的解决方法
最近又添了一台新电脑,配置好各个依赖环境后想用matplotlib画个图,结果报出下面的错误 根据报错分析,应该是C:/Python27/tcl/tk8.5/tk.tcl这个文件出问题了,根据图中的信 ...
- Android开发之画图的实现
Android开发之画图的实现 四天前上完安卓的第一节课,真的是一脸懵逼,尽管熊哥说和java是差不多的,然而这个包和那个包之间的那些转换都是些什么鬼呀!!!但是四天的学习和操作下来,我觉得安卓 ...
随机推荐
- Spring Autowired 注入失败总是Null
报错:NullPointerException 分析:错误原因是注入失败? <context:annotation-config/> <context:component-scan ...
- Spring任务调度之Timer
一.分类 由于现在大部分的系统都是采用了spring,所以所有的例子都结合spring来构建,目前主要的任务调度分为三种: Java自带的java.util.Timer类,这个类允许你调度一个java ...
- osgAnimation例子的注释的注释
osgAnimation例子的注释的注释 转自:http://www.cnblogs.com/sunliming/archive/2011/12/12/2284995.html #include &l ...
- Linux中总线设备驱动模型及平台设备驱动实例
本文将简要地介绍Linux总线设备驱动模型及其实现方式,并不会过多地涉及其在内核中的具体实现,最后,本文将会以平台总线为例介绍设备和驱动程序的实现过程. 目录: 一.总线设备驱动模型总体介绍及其实现方 ...
- [转]starling教程-触摸事件(Touch Events)(四)
在前面提到过,Starling是Sparrow的姊妹篇,正因为这样,Starling里的touch事件的机制其实是为移动设备的触摸交互设计的,所以当你使用它进行使用鼠标交互的桌面应用开发时,第一眼会感 ...
- Flume_使用
案例一: source:hive.log channel: memory sink: logger输出 拷贝一份flume-conf.properties.template改名为hive-mem-l ...
- innerHTML、innerText、outerHTML、outerText的区别
我们在用JS/JQ 获取或设置元素内容的时候,通常是获取或设置指定元素之间的内容 <script> //JS document.getElementById('test').innerHT ...
- 好程序与差程序Good Programming, Bad Programming
好程序与差程序 Good Programming, Bad Programming 发布时间: 2012-11-20 16:32:21| 阅读数:2,735 views 优秀的程序可以使复杂的东西看起 ...
- 总结-Hibernate
JPA 全称 Java Persistence API @Entity @Table(name = "user") public class User { @Id @Generat ...
- ip_conntrack table full dropping packet错误的解决方法
ip_conntrack表满导致的,iptables开启后会加载ip_conntrack模块,来跟踪包.默认情况下ip_conntrack_max大小为65536. 查看ip_conntrack最大大 ...