我目前的目标是在下拉菜单中以文本形式显示目录的最后一部分,并仍然通过整个目录打开图像。
我当前的下拉菜单仅显示目录的完整长度,并且工作正常。但是我确实知道如何使用os.path.basename
显示目录的最后一部分。不幸的是,它仅显示目录的最后一个字符串,但是当我单击“打开”时,它将尝试打开目录的最后一部分而不是整个目录。
以下是代码:
self.tkvar = StringVar()
# Directory
self.directory = "C:/Users/Eduards/Pictures"
self.choices = glob.glob(os.path.join(self.directory, "*.jpg"))
# Images
def change_dropdown():
imgpath = self.tkvar.get()
img = Image.open(imgpath)
img = img.resize((529,361))
photo = ImageTk.PhotoImage(img)
label2.image = photo
label2.configure(image=photo)
self.CaptureScreen['state'] = 'normal'
#widgets
self.msg1 = Label(main, text = "Choose here")
self.msg1.grid(column = 0, row = 0)
self.popupMenu = OptionMenu(main, self.tkvar, *self.choices)
self.popupMenu.grid(row=1, column=0)
self.display_label = label2 = Label(main, image=None)
self.display_label.grid(row=2, column=0, rowspan = 500)
self.open_button = Button(main, text="Open", command=change_dropdown)
self.open_button.grid(row=502, column=0)
以下是输出:
如何获取目录仅显示目录的最后一部分。例如,从上图中以蓝色突出显示的图像仅显示Minions.jpg
或仅显示Minions
。但实际上,它在后台打开了C:/Users/Eduards/Pictures\Minions.jpg
答案 0 :(得分:1)
非常简单,您必须更改打开代码。当前代码仅get
设置用户单击的标签并打开该字符串(文件名)。您需要更改代码,以使显示的标签随心所欲,但是代码的open
部分在文件名前加上self.directory
。
您已经省略了很多支持代码,但我认为您需要的是
img = Image.open('\\'.join(self.directory, imgpath))