打开2个文件夹中的图像并在python中同时显示它们

打开2个文件夹中的图像并在python中同时显示它们,python,tkinter,Python,Tkinter,我想从2个不同的文件夹打开图像,并将它们显示在彼此旁边,还有一个按钮“下一步”,以便能够移动到下一对图像 图像路径存储在一个txt文件中,所以让我们假设打开第一个图像和第二个图像,当我单击下一步,第三个和第四个图像等等 我是python新手,这是我到目前为止在阅读图像时发现的 from Tkinter import * from PIL import ImageTk, Image import os root = Tk() img = ImageTk.PhotoImage(Image.op

我想从2个不同的文件夹打开图像,并将它们显示在彼此旁边,还有一个按钮“下一步”,以便能够移动到下一对图像

图像路径存储在一个txt文件中,所以让我们假设打开第一个图像和第二个图像,当我单击下一步,第三个和第四个图像等等

我是python新手,这是我到目前为止在阅读图像时发现的

from Tkinter import *
from PIL import ImageTk, Image
import os


root = Tk()

img = ImageTk.PhotoImage(Image.open("path.ppm"))
panel = Label(root, image = img)
panel.pack(side = "bottom", fill = "both", expand = "yes")
root.mainloop()

但我不知道如何同时打开两个图像并添加“下一步”按钮。下面是一个工作示例:

  from tkinter import *

  def UpdateImg ( ):
     global img1, img2
     img1 = PhotoImage(file=ImgFiles[Cur])
     img2 = PhotoImage(file=ImgFiles[Cur+1])

     LblImg1.configure(image = img1, text=ImgFiles[Cur])
     LblImg2.configure(image = img2, text=ImgFiles[Cur+1] )

  def BtnNext( ):
     global Cur
     if Cur < len(ImgFiles)-2:
        Cur = Cur  + 2
        UpdateImg ( )

  def BtnPrev( ):
     global Cur
     if Cur > 1:
        Cur = Cur  - 2
        UpdateImg ( )

  fp = open("ImgFilesSrc.txt", "r")
  ImgFiles = fp.read().split('\n')
  fp.close()

  Cur = 0
  img1 = img2 = ''
  root = Tk()

  #Create the main Frame -----------------------------------------------------------------
  FrmMain = Frame(root)
  LblImg1 = Label(FrmMain, text = "Picture 1",   anchor=W, width=120, bg="light sky blue")
  LblImg2 = Label(FrmMain, text = "Picture 2",   anchor=W, width=120, bg="light sky blue")

  BtnPrev  = Button(FrmMain, text=" <  ", width=10, command=BtnPrev)
  BtnNext  = Button(FrmMain, text="  > ", width=10, command=BtnNext)   

  LblImg1.grid (row=2, rowspan = 3, column=1, columnspan=3);
  LblImg2.grid (row=2, rowspan = 3, column=4, columnspan=3);

  BtnPrev.grid (row=5, column=2);   BtnNext.grid(row=5, column=4)

  FrmMain.pack(side=TOP, fill=X)     
  #--------------------------------------------------------------------------
  UpdateImg ( )
  root.mainloop() 
从tkinter导入*
def UpdateImg():
全局img1,img2
img1=PhotoImage(文件=ImgFiles[Cur])
img2=PhotoImage(文件=ImgFiles[Cur+1])
LblImg1.configure(image=img1,text=ImgFiles[Cur])
LblImg2.configure(image=img2,text=ImgFiles[Cur+1])
def BtnNext():
全球Cur
如果Cur1:
Cur=Cur-2
UpdateImg()
fp=打开(“ImgFilesSrc.txt”、“r”)
ImgFiles=fp.read().split('\n')
fp.close()
Cur=0
img1=img2=“”
root=Tk()
#创建主框架-----------------------------------------------------------------
FrmMain=帧(根)
LblImg1=标签(FrmMain,text=“图片1”,锚点=W,宽度=120,bg=“浅天蓝”)
LblImg2=标签(FrmMain,text=“Picture 2”,锚点=W,宽度=120,bg=“浅天蓝”)
BtnPrev=按钮(FrmMain,text=“<”,宽度=10,命令=BtnPrev)
BtnNext=按钮(FrmMain,text=“>”,宽度=10,命令=BtnNext)
LblImg1.grid(行=2,行span=3,列=1,列span=3);
LblImg2.grid(行=2,行span=3,列=4,列span=3);
BtnPrev.grid(行=5,列=2);BtnNext.grid(行=5,列=4)
FrmMain.pack(侧面=顶部,填充=X)
#--------------------------------------------------------------------------
UpdateImg()
root.mainloop()

以下是一个您所问问题的工作示例:

  from tkinter import *

  def UpdateImg ( ):
     global img1, img2
     img1 = PhotoImage(file=ImgFiles[Cur])
     img2 = PhotoImage(file=ImgFiles[Cur+1])

     LblImg1.configure(image = img1, text=ImgFiles[Cur])
     LblImg2.configure(image = img2, text=ImgFiles[Cur+1] )

  def BtnNext( ):
     global Cur
     if Cur < len(ImgFiles)-2:
        Cur = Cur  + 2
        UpdateImg ( )

  def BtnPrev( ):
     global Cur
     if Cur > 1:
        Cur = Cur  - 2
        UpdateImg ( )

  fp = open("ImgFilesSrc.txt", "r")
  ImgFiles = fp.read().split('\n')
  fp.close()

  Cur = 0
  img1 = img2 = ''
  root = Tk()

  #Create the main Frame -----------------------------------------------------------------
  FrmMain = Frame(root)
  LblImg1 = Label(FrmMain, text = "Picture 1",   anchor=W, width=120, bg="light sky blue")
  LblImg2 = Label(FrmMain, text = "Picture 2",   anchor=W, width=120, bg="light sky blue")

  BtnPrev  = Button(FrmMain, text=" <  ", width=10, command=BtnPrev)
  BtnNext  = Button(FrmMain, text="  > ", width=10, command=BtnNext)   

  LblImg1.grid (row=2, rowspan = 3, column=1, columnspan=3);
  LblImg2.grid (row=2, rowspan = 3, column=4, columnspan=3);

  BtnPrev.grid (row=5, column=2);   BtnNext.grid(row=5, column=4)

  FrmMain.pack(side=TOP, fill=X)     
  #--------------------------------------------------------------------------
  UpdateImg ( )
  root.mainloop() 
从tkinter导入*
def UpdateImg():
全局img1,img2
img1=PhotoImage(文件=ImgFiles[Cur])
img2=PhotoImage(文件=ImgFiles[Cur+1])
LblImg1.configure(image=img1,text=ImgFiles[Cur])
LblImg2.configure(image=img2,text=ImgFiles[Cur+1])
def BtnNext():
全球Cur
如果Cur1:
Cur=Cur-2
UpdateImg()
fp=打开(“ImgFilesSrc.txt”、“r”)
ImgFiles=fp.read().split('\n')
fp.close()
Cur=0
img1=img2=“”
root=Tk()
#创建主框架-----------------------------------------------------------------
FrmMain=帧(根)
LblImg1=标签(FrmMain,text=“图片1”,锚点=W,宽度=120,bg=“浅天蓝”)
LblImg2=标签(FrmMain,text=“Picture 2”,锚点=W,宽度=120,bg=“浅天蓝”)
BtnPrev=按钮(FrmMain,text=“<”,宽度=10,命令=BtnPrev)
BtnNext=按钮(FrmMain,text=“>”,宽度=10,命令=BtnNext)
LblImg1.grid(行=2,行span=3,列=1,列span=3);
LblImg2.grid(行=2,行span=3,列=4,列span=3);
BtnPrev.grid(行=5,列=2);BtnNext.grid(行=5,列=4)
FrmMain.pack(侧面=顶部,填充=X)
#--------------------------------------------------------------------------
UpdateImg()
root.mainloop()

您的问题几乎涉及面很广;但是,由于您似乎已经知道如何显示一张图片,因此可以确保同时显示两张图片(只需添加另一个标签来固定它,就像第一张一样,并一次从文本文件中读取两行),您是否尝试过在
root.mainloop()之前简单地复制这三行
看看会发生什么?你的问题几乎很广泛;然而,由于您似乎已经知道如何显示一张图片,因此可以确保可以同时显示两张图片(只需添加另一个标签来固定它,就像第一张一样,并一次从文本文件中读取两行),您是否尝试过在
root.mainloop()
之前简单地复制这三行,看看会发生什么?