rumps icon indicating copy to clipboard operation
rumps copied to clipboard

rumps app crash using tkinter fileinput

Open axeII opened this issue 8 years ago • 1 comments

When using fileinput from library tkinter application crashes.

Using python3.6 macOS 10.12.6

Code:

  def __init__(self):
  ...
  tk.Tk().withdraw()

   @rumps.clicked("Settings")
    def settings(self, _):
        file_path = filedialog.askdirectory()
        if self.def_wallpaper != file_path:
            self.def_wallpaper = file_path
            self.editor.set_loading_dir(self.def_wallpaper)
Quit application
Fatal Python error: PyEval_RestoreThread: NULL tstate

Current thread 0x00007ffff45d43c0 (most recent call first):
  File "/usr/local/lib/python3.6/site-packages/PyObjCTools/AppHelper.py", line 301 in runEventLoop
  File "/usr/local/lib/python3.6/site-packages/rumps/rumps.py", line 1156 in run
  File "menu.py", line 84 in <module>
fish: Job 2, 'python3 menu.py' terminated by signal SIGABRT (Abort)

When I builded application:

   from menu import Bar
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 646, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 616, in _load_backward_compatible
  File "menu.pyc", line 10, in <module>
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 646, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 616, in _load_backward_compatible
  File "tkinter/__init__.pyc", line 36, in <module>
ValueError: character U+6573552f is not in range [U+0000; U+10ffff]

axeII avatar Sep 01 '17 10:09 axeII

Temporary fixed it with this in case someone else would like to input folder from user:

cmd = b"""choose folder with prompt "Please select an output folder:" """
        proc = Popen(["osascript", '-'], stdin=PIPE, stdout=PIPE)
        file_path, _ = proc.communicate(cmd)
        file_path = file_path.decode("utf-8").replace("alias Macintosh HD",'').replace('\n','').replace(':','/')
        if proc.returncode == 0:
            print(file_path)

axeII avatar Sep 04 '17 15:09 axeII