我正在尝试使用PIL在Tkinter中显示图片.正如前一个问题中所建议的那样,我使用了一个标签:
from Tkinter import *
class App(Frame):
def __init__(self,master):
Frame.__init__(self,master)
self.grid(row=0)
self.columnconfigure(0,weight=1)
self.rowconfigure(0,weight=1)
image = Image.load('example.png')
image = ImageTk.PhotoImage(image.convert('RGBA'))
self.display = Label(self,image=image)
self.display.grid(row=0)
root = Tk()
app = App(root)
app.mainloop()
root.destroy()
Run Code Online (Sandbox Code Playgroud)
有没有办法调整图像大小以适应标签?例如,如果example.png为2000x1000但窗口仅为800x600,则仅显示图像的一部分.
我正在尝试制作一个使用Tkinter显示动画GIF的程序.这是我最初使用的代码:
from __future__ import division # Just because division doesn't work right in 2.7.4
from Tkinter import *
from PIL import Image,ImageTk
import threading
from time import sleep
def anim_gif(name):
## Returns { 'frames', 'delay', 'loc', 'len' }
im = Image.open(name)
gif = { 'frames': [],
'delay': 100,
'loc' : 0,
'len' : 0 }
pics = []
try:
while True:
pics.append(im.copy())
im.seek(len(pics))
except EOFError: pass
temp = pics[0].convert('RGBA')
gif['frames'] = [ImageTk.PhotoImage(temp)]
temp = pics[0]
for item in pics[1:]:
temp.paste(item) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Tkinter制作计算器.我一直试图清理代码,但遇到了麻烦.创建按钮时,我使用以下代码:
Button(self,text="1",command=lambda: self.addkey("1"),width=self.defaultwidth,height=self.defaultheight).grid(row=5, column=0)
Button(self,text="2",command=lambda: self.addkey("2"),width=self.defaultwidth,height=self.defaultheight).grid(row=5, column=1)
Button(self,text="3",command=lambda: self.addkey("3"),width=self.defaultwidth,height=self.defaultheight).grid(row=5, column=2)
Run Code Online (Sandbox Code Playgroud)
以下是命令调用
def addkey(self,key):
# Adds a given key to the display
if len(self.displaytext) + len(key) <= self.maxlength:
self.displaytext += key
self.display["text"] = self.displaytext
Run Code Online (Sandbox Code Playgroud)
按顺序按下按钮1,2和3时,输出如下:
123
Run Code Online (Sandbox Code Playgroud)
我一直在尝试清理代码,使它看起来更像:
for i in range(3):
Button(self,text=str(i+1),command=lambda: self.addkey(str(i+1)),width=self.defaultwidth,height=self.defaultheight).grid(row=5, column=i)
Run Code Online (Sandbox Code Playgroud)
这样可以很好地添加按钮,但是当按顺序按下1,2和3时,屏幕上会显示以下内容:
333
Run Code Online (Sandbox Code Playgroud)
我想知道我是否错过了什么,或者这根本不可能.