예제 #1
0
    def bind_events(self):
        """
        初始化菜单的组建,并绑定事件函数

        :return:
        """
        # File_Menu
        if sys.platform == "darwin":  # in macos
            self.file_menu.add_command(
                label='Open',
                command=lambda: open_file(self.image_handler),
                accelerator="Command+O")
            self.bind_all("<Command-o>",
                          lambda e: open_file(self.image_handler))
            self.file_menu.add_command(
                label='Save',
                command=lambda: save_file(self.image_handler),
                accelerator="Command+S")
            self.bind_all("<Command-s>",
                          lambda e: save_file(self.image_handler))
        else:  # windows or linux
            self.file_menu.add_command(
                label='Open',
                command=lambda: open_file(self.image_handler),
                accelerator="Ctrl+O")
            self.bind_all("<Control-o>",
                          lambda e: open_file(self.image_handler))
            self.file_menu.add_command(
                label='Save',
                command=lambda: save_file(self.image_handler),
                accelerator="Ctrl+S")
            self.bind_all("<Control-s>",
                          lambda e: save_file(self.image_handler))

        self.bin_menu.add_command(
            label='Simple Binarization',
            command=lambda: create_scale(self.image_handler,
                                         from_=0,
                                         to=255,
                                         command=self.image_handler.convert_B,
                                         orient=tk.HORIZONTAL,
                                         resolution=1))

        self.bin_menu.add_command(
            label='Random dithering',
            command=lambda: create_scale(self.image_handler,
                                         from_=0,
                                         to=6,
                                         command=self.image_handler.convert_B2,
                                         orient=tk.HORIZONTAL,
                                         resolution=0.1))

        self.bin_menu.add_command(
            label='Floyd-Steinberg dithering',
            command=self.image_handler.convert_Floyd_dithering)

        self.file_menu.add_command(label='Grayscale',
                                   command=self.image_handler.convert_L)

        self.file_menu.add_command(label='Equalize',
                                   command=self.image_handler.equalize)

        self.file_menu.add_command(label='Histogram',
                                   command=self.image_handler.show_hist)

        self.file_menu.add_command(label='Recover',
                                   command=self.image_handler.recover)

        if sys.platform == "darwin":  # in macos
            self.file_menu.add_command(label='Undo',
                                       command=self.image_handler.undo,
                                       accelerator="Command+Z")
            self.bind_all("<Command-z>", self.image_handler.undo)
        else:  # windows or linux
            self.file_menu.add_command(label='Undo',
                                       command=self.image_handler.undo,
                                       accelerator="Ctrl+Z")
            self.bind_all("<Control-z>", self.image_handler.undo)

        # Image enhance
        self.enhance_menu.add_command(
            label='Brightness',
            command=lambda: create_scale(self.image_handler,
                                         from_=0,
                                         to=2,
                                         command=self.image_handler.
                                         brightness_enhance,
                                         orient=tk.HORIZONTAL,
                                         resolution=0.01))
        self.enhance_menu.add_command(
            label='Color',
            command=lambda: create_scale(self.image_handler,
                                         from_=0,
                                         to=3,
                                         command=self.image_handler.
                                         color_enhance,
                                         orient=tk.HORIZONTAL,
                                         resolution=0.01))
        self.enhance_menu.add_command(
            label='Constrast',
            command=lambda: create_scale(self.image_handler,
                                         from_=0,
                                         to=3,
                                         command=self.image_handler.
                                         contrast_enhance,
                                         orient=tk.HORIZONTAL,
                                         resolution=0.01))

        self.enhance_menu.add_command(
            label='Sharpness',
            command=lambda: create_scale(self.image_handler,
                                         from_=0,
                                         to=3,
                                         command=self.image_handler.
                                         sharpness_enhance,
                                         orient=tk.HORIZONTAL,
                                         resolution=0.01))
        # Blur and Filter
        self.blur_filter_menu.add_command(label='BoxBlur',
                                          command=lambda: self.image_handler.
                                          apply_filter(ImageFilter.BoxBlur(3)))
        self.blur_filter_menu.add_command(
            label='GaussianBlur',
            command=lambda: self.image_handler.apply_filter(
                ImageFilter.GaussianBlur(3)))
        self.blur_filter_menu.add_command(
            label='MedianFilter',
            command=lambda: self.image_handler.apply_filter(
                ImageFilter.MedianFilter(3)))

        self.blur_filter_menu.add_command(
            label='MinFilter',
            command=lambda: self.image_handler.apply_filter(
                ImageFilter.MinFilter(3)))

        self.blur_filter_menu.add_command(
            label='ModeFilter',
            command=lambda: self.image_handler.apply_filter(
                ImageFilter.ModeFilter(3)))

        self.blur_filter_menu.add_command(
            label='UnsharpMask',
            command=lambda: self.image_handler.apply_filter(ImageFilter.
                                                            UnsharpMask()))

        self.blur_filter_menu.add_command(
            label='MaxFilter',
            command=lambda: self.image_handler.apply_filter(
                ImageFilter.MaxFilter(3)))

        self.blur_filter_menu.add_command(
            label='RankFilter',
            command=lambda: create_scale(self.image_handler,
                                         from_=0,
                                         to=8,
                                         command=self.image_handler.
                                         rank_filter,
                                         orient=tk.HORIZONTAL,
                                         resolution=1))

        # other tool
        self.other_menu.add_command(
            label='Invert',
            command=lambda: self.image_handler.apply_ops(ImageOps.invert))
        self.other_menu.add_command(
            label='Mirror',
            command=lambda: self.image_handler.apply_ops(ImageOps.mirror))
        self.other_menu.add_command(
            label='Flip',
            command=lambda: self.image_handler.apply_ops(ImageOps.flip))
        self.other_menu.add_command(
            label='Rotate',
            command=lambda: create_scale(self.image_handler,
                                         from_=0,
                                         to=360,
                                         command=self.image_handler.rotate,
                                         orient=tk.HORIZONTAL,
                                         resolution=1))

        self.about_menu.add_command(
            label='About',
            command=lambda: tk.messagebox.showinfo('关于', '软件学院多媒体大作业\n版本:1.0'))
예제 #2
0
 def open_readme():
     open_file(local_path('README.html'))
예제 #3
0
 def open_output():
     open_file(output_path(''))
예제 #4
0
 def open_unofficial_sprite_dir(_evt):
     open_file(self.unofficial_sprite_dir)
예제 #5
0
 def open_output():
     open_file(default_output_path(guivars['output_dir'].get()))
예제 #6
0
 def open_readme():
     open_file('https://wiki.ootrandomizer.com/index.php?title=Main_Page')