本文整理汇总了Python中matplotlib.backends.backend_tkagg.FigureCanvasTkAgg.bind方法的典型用法代码示例。如果您正苦于以下问题:Python FigureCanvasTkAgg.bind方法的具体用法?Python FigureCanvasTkAgg.bind怎么用?Python FigureCanvasTkAgg.bind使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类matplotlib.backends.backend_tkagg.FigureCanvasTkAgg
的用法示例。
在下文中一共展示了FigureCanvasTkAgg.bind方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg [as 别名]
# 或者: from matplotlib.backends.backend_tkagg.FigureCanvasTkAgg import bind [as 别名]
class ImageSession:
def __init__(self, master, filename, hdu=0):
# filename should be a string!
self.filename = filename
self.hdu = hdu
# The master window?
self.master = master
if not os.path.exists(self.filename):
tkMessageBox.showerror("File not found", "File {0} doesn't exist!".format(file))
return
self.openFile()
self.createWindow()
def openFile(self):
# Try to open the file and read in the data from HDU
try:
hdulist = pf.open(self.filename)
try:
if hdulist[self.hdu].header['XTENSION'] == 'BINTABLE':
tkMessageBox.showerror("HDU Error", "The HDU {0} is not an ImageHDU!".format(self.hdu))
raise util.NotAnImageHDUError("The HDU {0} is not an ImageHDU!".format(self.hdu))
# HDU is a table -- throw an error!
except KeyError:
# HDU is an image, carry on!
pass
self.rawData = hdulist[self.hdu].data
self.rawData.shape
except IOError:
tkMessageBox.showerror("FITS file error ", "File {0} does not appear to be a valid FITS file!".format(self.filename))
raise util.ImageSessionError("File {0} does not appear to be a valid FITS file!".format(self.filename))
except AttributeError:
tkMessageBox.showerror("FITS file error ", "File {0} does not appear to have data in HDU 0.".format(self.filename))
raise util.ImageSessionError("File {0} does not appear to have data in HDU 0.".format(self.filename))
def createWindow(self):
# Create the actual window to draw the image and scale controls
self.ImageWindow = Tk.Toplevel(self.master)
self.ImageWindow.title(self.filename)
#self.ImageWindow.protocol("WM_DELETE_WINDOW", self.closeImage)
# TODO: THIS SHOULD DETECT SCREEN RESOLUTION
screenSize = (1050/1.5, 1680/1.5)
if self.rawData.shape[0] > screenSize[0] and self.rawData.shape[1] > screenSize[1]:
factor1 = screenSize[0] / self.rawData.shape[0]
factor2 = screenSize[1] / self.rawData.shape[1]
self.zoomFactor = min([factor1, factor2])
elif self.rawData.shape[1] > screenSize[0]:
self.zoomFactor = screenSize[0]/ self.rawData.shape[1]
elif self.rawData.shape[0] > screenSize[1]:
self.zoomFactor = screenSize[1] / self.rawData.shape[0]
else:
self.zoomFactor = 1.
# Create the image tools
scaleTypeLabel = Tk.Label(self.ImageWindow, text="Scaling: ")
scaleTypeLabel.grid(row=0, column=0)
self.scalingName = Tk.StringVar()
self.scalingName.set("arcsinh")
self.scalingOption = Tk.OptionMenu(self.ImageWindow, self.scalingName, "arcsinh","linear","sqrt", command=self.setRescaler)
self.scalingOption.grid(row=0, column=1)
rescaleLabel = Tk.Label(self.ImageWindow, text="Rescale: ")
rescaleLabel.grid(row=1, column=0)
self.scaleValue = Tk.Scale(self.ImageWindow, from_=-4, to=6, resolution=0.05, orient=Tk.HORIZONTAL, showvalue=1, length=300)
self.scaleValue.set(1.0)
self.scaleValue.grid(row=1, column=1)
minLabel = Tk.Label(self.ImageWindow, text="Min Pixel Value: ")
minLabel.grid(row=2, column=0)
self.minValue = Tk.Scale(self.ImageWindow, resolution=0.05, orient=Tk.HORIZONTAL, showvalue=1, length=300)
self.minValue.set(1.0)
self.minValue.grid(row=2, column=1)
maxLabel = Tk.Label(self.ImageWindow, text="Max Pixel Value: ")
maxLabel.grid(row=3, column=0)
self.maxValue = Tk.Scale(self.ImageWindow, resolution=0.05, orient=Tk.HORIZONTAL, showvalue=1, length=300)
self.maxValue.set(1.0)
self.maxValue.grid(row=3, column=1)
# Set the min/max slider boundaries
self.minValue.config(from_=self.rawData.min(), to=self.rawData.max())
self.minValue.set(self.rawData.min())
self.maxValue.config(from_=self.rawData.min(), to=self.rawData.max())
self.maxValue.set(self.rawData.max())
# Set the default rescaler
self.rescaler = util.arcsinhStretch
self.scaleImage()
self.drawImage()
# Bind the sliders to the scaleImage() method
self.scaleValue.bind("<ButtonRelease-1>", self.redraw)
self.minValue.bind("<ButtonRelease-1>", self.redraw)
self.maxValue.bind("<ButtonRelease-1>", self.redraw)
self.scalingOption.bind("<ButtonRelease-1>", self.redraw)
#.........这里部分代码省略.........