Я разработал простую программу, которая показывает изображение в верхней рамке и вводит текст через поле ввода рядом с надписью «Заметки» в нижней рамке.И если вы нажмете Enter, он должен перейти к другой картинке и так далее.Он отлично работает на моем компьютере под управлением Windows 10. Но когда я открываю его на Mac-book моего друга, он показывает только картинку, нижняя рамка (текстовая метка и поле ввода) не отображаются.Я попытался максимизировать размер окна, чтобы увидеть, возможно, оно было скрыто, но его просто нет.Есть ли причина, по которой он будет вести себя по-другому на MacOS?Кроме того, если вы нажмете Enter, он без проблем перейдет к следующему изображению.
import tkinter as tk
from PIL import ImageTk, Image
import os
from tkinter import messagebox
class imageProcessor:
def __init__(self):
self.directory = '/Users/Juan G Mendoza/Desktop/Image Processing/pics/'
self.pics = dict()
self.k = 0
self.max = 0
for filename in os.listdir(self.directory):
if(not filename[0] == '.'):
self.pics[self.k] = filename
self.k += 1
self.max = self.k
self.k = 0
#os.rename(self.directory + self.pics[self.k], self.dir + self.pics[self.k])
self.window = tk.Tk()
self.window.bind('<Return>', self.enter)
self.top_frame = tk.Frame(self.window)
self.bottom_frame = tk.Frame(self.window)
#Mount picture onto Top Frame
self.img = ImageTk.PhotoImage(Image.open(self.directory + self.pics[self.k]))
self.panel = tk.Label(self.top_frame, image = self.img)
#Mount things in Bottom Frame
self.comment_entry = tk.Entry(self.bottom_frame, width = 50)
self.note_label = tk.Label(self.bottom_frame, text = 'Notes:')
#Pack Everything
self.panel.pack(side = 'top')
self.note_label.pack(side = 'left')
self.comment_entry.pack(side = 'left')
#Pack Frames
self.top_frame.pack()
self.bottom_frame.pack()
self.window.mainloop()
def enter(self, event):
comment = self.comment_entry.get()
comment = comment.lower()
openF = open(self.directory + '/My Comments.txt', 'a')
#print('here')
if comment == 'y':
openF.write(self.pics[self.k] + '\t Good' + '\n')
elif comment == 'n':
openF.write(self.pics[self.k] + '\t Bad' + '\n')
elif comment == 'quit':
self.k = self.max
else:
openF.write(self.pics[self.k] + '\t' + comment + '\n')
openF.close()
if(self.k + 1 < self.max):
self.comment_entry.delete(0, 'end')
self.k += 1
self.img = ImageTk.PhotoImage(Image.open(self.directory + self.pics[self.k]))
self.panel.configure(image = self.img)
self.panel.update()
else:
messagebox.showinfo('Image Processor','There are no more pictures')
self.window.destroy()
test = imageProcessor()