1+ import os
2+ import subprocess
13import sys
24
35from PySide6 import QtGui
46from PySide6 .QtWidgets import QApplication
57
6- from py2exe_gui .Core .packaging import Packaging
7- from py2exe_gui .Core .packaging_task import PackagingTask
8- from py2exe_gui .Widgets .dialog_widgets import SubProcessDlg
9- from py2exe_gui .Widgets .main_window import MainWindow
8+ # from .Constants import *
9+ from .Core import Packaging , PackagingTask
10+ from .Widgets import MainWindow , SubProcessDlg
1011
1112
1213class MainApp (MainWindow ):
@@ -21,11 +22,11 @@ def __init__(self, *args, **kwargs) -> None:
2122 self .packager = Packaging (self )
2223 self .subprocess_dlg = SubProcessDlg (self )
2324
24- self ._connect_signals ()
25+ self ._connect_slots ()
2526
2627 self .status_bar .showMessage ("就绪" )
2728
28- def _connect_signals (self ) -> None :
29+ def _connect_slots (self ) -> None :
2930 """
3031 连接各种信号与槽 \n
3132 """
@@ -38,7 +39,6 @@ def _connect_signals(self) -> None:
3839 self .center_widget .handle_ready_to_pack
3940 )
4041
41- # TODO 优化pyinstaller_args_browser的接口
4242 self .packager .args_settled .connect (
4343 lambda val : self .center_widget .pyinstaller_args_browser .enrich_args_text (
4444 val
@@ -50,6 +50,23 @@ def run_packaging():
5050 self .subprocess_dlg .show ()
5151
5252 self .center_widget .run_packaging_btn .clicked .connect (run_packaging )
53+
54+ def handle_multifunction ():
55+ """处理子进程对话框多功能按钮点击信号的槽 \n """
56+ btn_text = self .subprocess_dlg .multifunction_btn .text ()
57+ if btn_text == "取消" :
58+ self .packager .subprocess .abort_process ()
59+ self .subprocess_dlg .close ()
60+ elif btn_text == "打开输出位置" :
61+ dist_path = self .packaging_task .script_path .parent / "dist"
62+ if sys .platform .startswith ("win32" ):
63+ os .startfile (dist_path )
64+ elif sys .platform .startswith ("linux" ):
65+ subprocess .call (["xdg-open" , dist_path ])
66+ elif sys .platform .startswith ("darwin" ):
67+ subprocess .call (["open" , dist_path ])
68+
69+ self .subprocess_dlg .multifunction_btn .clicked .connect (handle_multifunction )
5370 self .packager .subprocess .output .connect (self .subprocess_dlg .handle_output )
5471
5572 def closeEvent (self , event : QtGui .QCloseEvent ) -> None :
0 commit comments