【问题标题】:Python: Opening multiple images in Windows Image Viewer and multiple of such windows in each cornerPython:在 Windows 图像查看器中打开多个图像,并在每个角落打开多个此类窗口
【发布时间】:2020-10-09 22:39:40
【问题描述】:

我是初学者,我确信这很简单,但我一生都无法通过谷歌搜索找到解决方案。

在一个文件夹中,我有 9 张照片。我目前,突出显示它们中的几个并右键单击并在默认图像查看器中打开,然后将窗口放在角落,然后对这种排列中的其余图像执行此操作:

All Photos in Folder

All Photos Opened in each corner

这样我可以将鼠标悬停在左上角窗口上并用鼠标滚动,它会在图像 1.png 和 2.png 之间滚动。如果我将鼠标悬停在右上角并用鼠标滚轮滚动,图像将在 3.png、4.png 和 5.png 之间滚动。其他两个窗口也一样。目前我有很多图像,我必须手动打开并像这样配置。我想写一个简单的脚本,以这种方式自动打开这些图像并将它们排列在每个角落。

我找到了一些打开单个图像的方法,但找不到在照片查看器的单个实例中打开多个图像的方法,也找不到如何重新定位此类窗口。

from PIL import Image
img = Image.open('example.jpg')
img.show() 

任何帮助将不胜感激!

【问题讨论】:

    标签: python python-3.x windows image window


    【解决方案1】:

    这可能不是在我原来的问题中完成任务的最佳方式,但是在按照本指南在 Windows 10 中启用原始 Windows 照片查看器之后:How-to-make-windows-photo-viewer-your-default-image-viewer-on-windows-10

    我制作了 4 个文件夹,每个文件夹中都有相应的图片(左上角、右上角、左下角和右下角)。

    然后,我创建了默认应用程序以使用 Windows 照片查看器打开 png 图像。

    安装win32gui:

    pip install win32gui
    

    然后我写了这个似乎可以工作的脚本:

    import os
    import win32gui
    import time
    
    FIRST_PATH = 'C:\\Gale\\Img_test\\left_bottom\\6.png'
    SECOND_PATH = 'C:\\Gale\\Img_test\\left_top\\1.png'
    THIRD_PATH = 'C:\\Gale\\Img_test\\right_bottom\\8.png'
    FOURTH_PATH = 'C:\\Gale\\Img_test\\right_top\\3.png'
    
    folder_paths = [FIRST_PATH, SECOND_PATH, THIRD_PATH, FOURTH_PATH]
    
    TOP_RIGHT_COORD = [954,0,980,530]
    TOP_LEFT_COORD = [-10,0,980,530]
    BOTTOM_RIGHT_COORD = [954,515,980,530]
    BOTTOM_LEFT_COORD = [-10,515,980,530]
    
    
    def openCharts(paths):
        for path in paths:
            os.startfile(path)
    
    def enumHandler(hwnd, lParam):
         if win32gui.IsWindowVisible(hwnd):
             if '1.png' in win32gui.GetWindowText(hwnd):
                 win32gui.MoveWindow(hwnd, TOP_LEFT_COORD[0], TOP_LEFT_COORD[1], TOP_LEFT_COORD[2],TOP_LEFT_COORD[3], True)
             elif '3.png' in win32gui.GetWindowText(hwnd):
                 win32gui.MoveWindow(hwnd, TOP_RIGHT_COORD[0], TOP_RIGHT_COORD[1], TOP_RIGHT_COORD[2],TOP_RIGHT_COORD[3], True)
             elif '6.png' in win32gui.GetWindowText(hwnd):
                 win32gui.MoveWindow(hwnd, BOTTOM_LEFT_COORD[0], BOTTOM_LEFT_COORD[1], BOTTOM_LEFT_COORD[2],BOTTOM_LEFT_COORD[3], True)
             elif '8.png' in win32gui.GetWindowText(hwnd):
                 win32gui.MoveWindow(hwnd, BOTTOM_RIGHT_COORD[0], BOTTOM_RIGHT_COORD[1], BOTTOM_RIGHT_COORD[2],BOTTOM_RIGHT_COORD[3],  True)
    
    openCharts(folder_paths)
    time.sleep(0.5)
    win32gui.EnumWindows(enumHandler, None)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-07
      相关资源
      最近更新 更多