brentvollebregt / auto-py-to-exe

Converts .py to .exe using a simple graphical interface
MIT License
3.95k stars 677 forks source link

Clicking the select file button will freeze on macOS 14.4 arm64 #473

Closed jiayouzl closed 6 months ago

jiayouzl commented 6 months ago

macos 14.4 arm64 最新版本的auto-to-exe无法选择文件,点击选择文件按钮,就卡死了.

github-actions[bot] commented 6 months ago

👋 Hi, just a reminder that if you haven't read the help post yet, give it a read to see if your issue is covered in it and make sure to follow the debugging section.

Also please note, as stated in the README, if your issue is only associated with your application and not auto-py-to-exe itself, please do not create an issue in this repository - instead, comment on the help post, video or create a new discussion.

brentvollebregt commented 6 months ago

When you say "the latest version" - does an older version work for you currently?

jiayouzl commented 6 months ago

When you say "the latest version" - does an older version work for you currently?

All have this problem!

brentvollebregt commented 6 months ago

Does this look related to #304 by any chance?

If you run this script in Python, does it lead to the same issue?

from tkinter import Tk
from tkinter.filedialog import askopenfilename

root = Tk()
root.withdraw()
root.wm_attributes('-topmost', 1)
file_path = askopenfilename(parent=root)
root.update()
print(file_path)
jiayouzl commented 6 months ago

Does this look related to #304 by any chance?

If you run this script in Python, does it lead to the same issue?

from tkinter import Tk
from tkinter.filedialog import askopenfilename

root = Tk()
root.withdraw()
root.wm_attributes('-topmost', 1)
file_path = askopenfilename(parent=root)
root.update()
print(file_path)

Yes, Python 3.9.19 encountered the same problem when running.

jiayouzl commented 6 months ago
root.withdraw()

Delete the code line above and it will be normal.

brentvollebregt commented 6 months ago

Great find, however when removing root.withdraw(), I imagine there is another small window that appears which looks like this:

image

Do you also get this same window?

Aside from answering that question, could you also try this:

from tkinter import Tk
from tkinter.filedialog import askopenfilename

root = Tk()
root.withdraw()
# root.wm_attributes('-topmost', 1)
file_path = askopenfilename(parent=root)
root.update()
print(file_path)

Wondering if root.wm_attributes('-topmost', 1) is the issue as it's trying to interact with a window that's no longer there.

jiayouzl commented 6 months ago

Great find, however when removing root.withdraw(), I imagine there is another small window that appears which looks like this:

image

Do you also get this same window?

Aside from answering that question, could you also try this:

from tkinter import Tk
from tkinter.filedialog import askopenfilename

root = Tk()
root.withdraw()
# root.wm_attributes('-topmost', 1)
file_path = askopenfilename(parent=root)
root.update()
print(file_path)

Wondering if root.wm_attributes('-topmost', 1) is the issue as it's trying to interact with a window that's no longer there.

No, the problem is not solved.

jiayouzl commented 6 months ago

I tried to change the code, and the final code is as follows. You can refer to it, and my test here is already working properly.

# -*- coding: UTF-8 -*-

from tkinter import Tk
from tkinter.filedialog import askopenfilename

root = Tk()
root.withdraw()

root.wm_attributes('-topmost', 1)
file_path = askopenfilename()
root.update()
print(file_path)
brentvollebregt commented 6 months ago

Oh, that's really interesting; dropping parent=root from the askopenfilename call. Thank you very much for testing this - I'll take a look at that parameter and see if it makes sense to drop.

brentvollebregt commented 6 months ago

I've just released auto-py-to-exe 2.43.2 with this change - hopefully this fixes the issue. Let me know if it doesn't and we can look into this more.

jiayouzl commented 6 months ago

I've just released auto-py-to-exe 2.43.2 with this change - hopefully this fixes the issue. Let me know if it doesn't and we can look into this more.

Okay, 2.43.2 can be used now.

There are still some minor issues, such as after selecting a file once, when selecting the file again, the file selection dialog is in the background of the program instead of in the foreground, and you have to manually bring it up.

brentvollebregt commented 6 months ago

There are still some minor issues, such as after selecting a file once, when selecting the file again, the file selection dialog is in the background of the program instead of in the foreground, and you have to manually bring it up.

I've just put a change on the master branch that may fix this. Instead of creating a new tkinter.Tk object each time, only one is created.