2010-07-18 42 views
19

Tôi có một chương trình Python sử dụng Qt (PyQt4 trên thực tế) và khi tôi khởi chạy nó từ main.py, tôi nhận được một cửa sổ giao diện điều khiển và cửa sổ GUI (trên Windows, tất nhiên).Ẩn cửa sổ giao diện điều khiển của ứng dụng Python GUI với py2exe

Sau đó, tôi biên dịch chương trình với py2exe và main.exe được tạo thành công. Tuy nhiên, nếu tôi chạy main.exe (đây là những gì người dùng của chương trình sẽ làm) console cửa sổ của Python vẫn xuất hiện và tất cả các văn bản gỡ lỗi của tôi là stdout-ed vào cửa sổ đó.

Tôi muốn ẩn cửa sổ dòng cmd khi ứng dụng của tôi đang chạy và tôi chỉ muốn GUI của tôi hiển thị cho người dùng khi được thực thi từ tệp .exe.

Điều đó có khả thi không?

Trả lời

27

Có, có thể.

Nếu tôi sử dụng

setup(console=['__main__.py'], options={"py2exe":{"includes":["sip"]}}) 

Nó tạo ra một ứng dụng giao diện điều khiển, tuy nhiên nếu tôi sử dụng

setup(windows=['__main__.py'], options={"py2exe":{"includes":["sip"]}}) 

nó không hiển thị giao diện điều khiển trên tập tin .exe. Nhưng đầu ra được đổ vào tập tin main.exe.log trong thư mục .exe. Hãy cẩn thận.

+2

Để ngăn chặn đầu ra, bạn có thể chuyển hướng stdout như trong http://coreygoldberg.blogspot.com/2009/05/python-redirect-or-turn-off-stdout-and.html hoặc tới một số cơ sở ghi nhật ký khác. – ars

+1

Đối với tôi, "nhâm nhi" đã không được công nhận, nhưng tôi đã có thể xây dựng exe của tôi và có nó hoạt động bằng cách chỉ cần sử dụng "thiết lập (windows = ['fileName.py'])" –

+0

Giải pháp này không làm việc cho tôi . Đây là mã của tôi 'setup ( options = {'py2exe': {'bundle_files': 1, 'compressed': True}}, console = [" main.pyw "], zipfile = None, )' –

6

Tôi nghi ngờ điều này có ảnh hưởng đến py2exe, nhưng nó liên quan đến câu hỏi. Để chạy GUI python trên các cửa sổ không có thiết bị đầu cuối, hãy sử dụng pythonw.exe thay vì python.exe. Điều này sẽ xảy ra tự động nếu bạn kết thúc tên tệp bằng ".pyw".

2

Điều này có thể không liên quan trực tiếp đến câu hỏi của bạn nhưng tôi nghĩ rằng nó đáng để thử.

Bạn dễ dàng sử dụng PyInstaller bằng cách sử dụng mã sau đây.

pyinstaller -w myscript.py 

Cũng đơn giản như vậy và mọi thứ được giải quyết.

Các vấn đề liên quan