Tkinter не показывает все кадры на MacOS - PullRequest
0 голосов
/ 01 марта 2019

Я разработал простую программу, которая показывает изображение в верхней рамке и вводит текст через поле ввода рядом с надписью «Заметки» в нижней рамке.И если вы нажмете 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...