【发布时间】:2014-01-14 14:38:17
【问题描述】:
我正在编写一个简短的脚本来在画布中显示用户选择的图像。用户选择的图像可以是不同大小的。从长远来看,如果加载的图像大于屏幕分辨率,我希望应用程序最大化并显示滚动条,但是我有一个很可能是一个简单的问题,选择的图像没有加载到画布中。我只是需要另一双眼睛。
#!/usr/bin/python
# -*- coding: utf-8 -*-
from Tkinter import Tk, Canvas, Frame, Menu, BOTH, NW
import Image
import ImageTk
import tkFileDialog
appname = "example"
class Example(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title( appname )
menubar = Menu(self.parent)
self.parent.config(menu=menubar)
fileMenu = Menu(menubar, tearoff=0)
fileMenu.add_command(label="Open File", command=self.fileOpen)
fileMenu.add_command(label="Exit", command=self.onExit)
menubar.add_cascade(label="File", menu=fileMenu)
def onExit(self):
self.quit()
def fileOpen(self):
file = tkFileDialog.askopenfile(
parent=self.parent,
mode='rb',
title='Choose a file',
filetypes=[ ( "Image files",("*.jpg", "*.jpeg" ) )] )
if file != None:
self.img = Image.open(file)
self.tatras = ImageTk.PhotoImage(self.img)
canvas = Canvas(self, width=self.img.size[0]+20,
height=self.img.size[1]+20)
canvas.create_image(10, 10, anchor=NW, image=self.tatras)
canvas.pack(fill=BOTH, expand=1)
def filePref(self):
self.quit()
def main():
root = Tk()
root.geometry("250x150+300+300")
app = Example(root)
root.mainloop()
if __name__ == '__main__':
main()
为什么选择图像时没有加载到画布中?我没有显示错误。 如果图像大于初始窗口大小,如何最大化整个窗口? 如果图像大于屏幕分辨率,如何添加滚动条?
谢谢
【问题讨论】:
-
代码缩进看起来很乱。