2017-08-10 40 views
0

我會直接指出這一點。 我正在開發一個GUI for Linux的GTK程序,當用戶點擊一個特定的按鈕時,應該運行安裝腳本。無法在新窗口中運行安裝腳本

如果我通過終端運行我的應用程序,我現在正在開發它,我有一個開放的終端和bash腳本可以運行。

#this works 
python main.py 

我的問題是什麼,是應用程序將被釋放作爲一個普通的應用程序,它通過.desktop文件運行時,像往常一樣,這意味着終端將不開放。

我一直在搜索遍地,無法找到一種方法來運行我的安裝腳本,打開一個新的終端爲安裝目的。 在正常情況下,從bash,那麼你可以運行這個命令:

uxterm -e -hold 'path to script' 

我不能在python這項工作與:

os.system("uxterm -e -hold 'installer_path') 

因爲installer_path是一個字符串:

string=name.lower().lstrip().replace(" ","")+"_installer.sh" 
installer_path=get_app_installer_path(category)+string 

所以我的觀點是,我該如何正確打開一個新終端,並從新終端運行我的安裝腳本?

謝謝你的時間。

+0

所以,你的問題是,installer_path被視爲一個字符串,而不是一個變量? – Samy

+0

是的,因爲在該方法中,安裝程序路徑被視爲字符串,而應將其作爲bash命令或bash腳本的路徑進行處理。 – Woops

+0

我對你的解釋很迷茫,所以讓我們儘可能清楚。以下聲明是正確的嗎? 'installer_path是一個Python變量,我想在子shell中用作Bash變量,但相反,Bash將變量視爲一個名爲「installer_path」的字符串。這是這種情況嗎? – Samy

回答

0

要替換一個Python變量到你只需要像這樣格式化bash腳本:

os.system("uxterm -hold -e {0}".format(installer_path)) 

這應該工作你的情況。

+0

謝謝,最後這個工作。謝謝你的時間,問題解決了。 – Woops