Python: окно приложения все черное, хотя .py работает нормально - PullRequest
0 голосов
/ 23 января 2020

Я пишу код, который добавляет порядковые номера в качестве префикса к именам файлов в выбранной папке. Все хорошо под Pycharm (см. Рис. 1). Рис.1 Однако после того, как документ .py был преобразован в .app с помощью следующих шагов, окно становится черным (Рис.2). Рис.2 Вот что сделал: (1) pip install py2app (2) py2applet --make-setup EasyReNamer.py (3) python setup.py py2app Тогда EasyReNamer.app доступен в дистрибутиве папки. А вот и мой код:

import os
from tkinter import filedialog
import tkinter as tk
from tkinter import Button

class ReName():
    def __init__(self):
        self.root = tk.Tk()
        self.root['background']='white'
        self.n = 0
        label = tk.Label(self.root, font=("Arial Bold", 15),text='Please select a directory to rename files in the folder:')
        self.label1=tk.Label(self.root)
        label.pack()
        self.btn = Button(self.root, font=("Arial", 15), relief='raised',highlightbackground='orange', text="Click Me", command=self.rename)
        self.btn.pack()

    def widget_position(self,root,width,height):
        self.width=self.root.winfo_screenwidth()
        self.height=self.root.winfo_screenheight()
        x=(self.width-width)/2
        y=(self.height-height)/2
        self.root.geometry('%dx%d+%d+%d' % (width,height,x,y))
        self.root.grid()

    def get_db_configure(self):
        self.root.title('Easy ReNamer Version 1.0')
        self.root.resizable(0, 0)

    def rename(self):
        file_path = filedialog.askdirectory(title='ReNamer')
        self.file_lists = os.listdir(file_path)
        for self.file in self.file_lists.copy():
            self.oldname = file_path + os.sep + self.file
            if os.path.isdir(self.oldname) or self.file.startswith('.'):
                continue
            else:
                self.newname = file_path + os.sep + '(' + str(self.n + 1) + ')' + self.file
                os.rename(self.oldname, self.newname)
                self.n+=1
        self.label1.config(text='{} file(s) renamed'.format(self.n))
        self.label1.pack()
        self.btn.config(state='disabled')
        self.btn.pack()

ins=ReName()
ins.widget_position(ins.get_db_configure(),500,80)
ins.root.mainloop()

1 Ответ

0 голосов
/ 15 марта 2020

Я в MacOS 10.14.16 с такими же проблемами.

Я пробовал так много способов, и эта версия работает для меня:

  1. Python 3.7. 0
  2. tkinter 8.6.7 (8.6.8 не работает)
  3. py2app 0.19

с анакондой

...