以下问题分别记录:
- 导入模块时,如果采取import x方式,后续对x内的变量及方法进行调用时需要使用x.y形式;
- 关于Tkinter需要根据变量值时刻改变的方法:
e=Tkinter.StringVar()
使用该函数可以创建e来存储这个变量,需要注意的时,如果该变量的声明在调用之前,e.get()
会返回空值,而不是报错; - 关于button的绑定命令,
button=Tkinter.Button(top,text='search',command=search)
其中search函数在指定时不能加(), - 关于
name.bind('<Return>',search)
其中的return表示回车,enter表示输入,且该部分输入值会自动传递给search作为参数; top = Tkinter.Tk()
在使用时需要注意,150和150之间为x,不是*
top.geometry('150x150')关于下面神奇的调用与返回
“`def init(self):
self.top = Tkinter.Tk()
self.top.geometry(‘550x350’)self.e=Tkinter.StringVar() self.r=Tkinter.StringVar() self.l=Tkinter.StringVar() self.name=Tkinter.Entry(self.top,width=550,textvariable=self.e) print 1 self.name.bind('<Return>',self.search) self.name.pack() self.scr=Tkinter.Scrollbar(self.top) self.scr.pack(side=Tkinter.RIGHT,fill=Tkinter.Y) self.list=Tkinter.Listbox(self.top,height=11,width=550,yscrollcommand=self.scr.set) self.list.bind('<Double-1>',self.refer) self.scr.config(command=self.list.yview) self.list.pack() print 1 self.button=Tkinter.Button(self.top,text='search',command=self.search) self.button.pack()
def refer(self,link, ev=None):
link=self.list.get(self.list.curselection())
link=link.split(‘:’)[-1]
webbrowser.open(link)def r_label(self, ev=None):
if self.r.get()!=”:
link=(self.r.get()).split(‘\n’)
for each in link:
print each
self.list.insert(Tkinter.ACTIVE,each)def search(self, ev=None):
print 1
name_s=self.e.get()
index_s=update.up_bilibili(name_s)
self.r.set(index_s)
self.r_label()
其中部分会默认返回值,需要在对应函数中
def search(self, ev=None):“`填充ev=None,原因不明;关于绑定函数时,如果带有()会默认执行;
- 对于Tkinter组件,可以使用方法update()使其更新参数,比如canvas的尺寸、内容,标签的内容等;
- 每次调用Tkinter.Canvas均为重新调用创建组件;
- 最初计划在函数中刷新canvas的图片内容,出现了一个BUG:当执行到CANVAS2的刷新动作时,CANVAS1的内容会变为空白,最后发现是因为在函数内使用了self.photo变量来生成图片内容,但self.photo在函数退出时被清理掉了,所以最后显示空白。如下:
self.url=cover.decode('unicode_escape')
self.file = urllib2.urlopen(urllib2.Request(self.url))
self.tmpIm = cStringIO.StringIO(self.file.read())
self.image = Image.open(self.tmpIm)
self.photo = ImageTk.PhotoImage(self.image)
self.dilidili_canvas.create_image(120,150,image=self.photo)
self.dilidili_canvas.config(height=200,width=200)
因为需要在canvas定义时定义一个全局变量,在函数中对全局变量进行修改即可;