2011-09-27 7 views
13

Zajmuję się program, który ma przycisk. Po naciśnięciu, chcę otworzyć terminal, który działa:Otwórz terminal od python

sudo apt-get update 

Używam:

os.system("gnome-terminal -e 'sudo apt-get update'") 

To działa prawidłowo. Jedynym problemem jest to, że po zakończeniu aktualizacji terminal się zamyka. Co mogę zrobić, aby pozostawić terminal otwarty?

+0

Zobacz ten post: http://stackoverflow.com/questions/3512055/avoid-gnome-terminal-close-after-script-execution – rodion

Odpowiedz

11

Można to zrobić:

os.system("gnome-terminal -e 'bash -c \"sudo apt-get update; exec bash\"'") 
+1

I prawdopodobnie jest tak samo z konsolą (jeśli używam KDE)? – mika29

+0

os.system ("gnome-terminal -e" sudo apt-get update ""). Nie wiem, dlaczego potrzebujesz dodatkowego "bash", kiedy to działa dobrze. – mastash3ff

+1

@ mastash3ff - przeczytaj pytanie. "po zakończeniu aktualizacji terminal się zamknie". Dodatkowe wywołanie bash sprawia, że ​​pozostaje otwarte. – jterrace

4

Istnieje kilka możliwości:

  • dodać ; read -p "Hit ENTER to exit" do końca wiersza poleceń.
  • dodać ; sleep 10 na końcu wiersza poleceń, aby poczekać, a następnie wyjść.
  • Konfiguracja terminalu gnome:

    Przejdź do menu "Edycja" i kliknij "Aktualny profil". Kliknij kartę "Tytuł i polecenie". Tam znajduje się ustawienie o nazwie "Gdy polecenie kończy pracę". Zmień go na "przytrzymaj terminal otwarty". Możesz również utworzyć nowy profil.

0

Można usunąć -e:

os.system("gnome-terminal 'sudo apt-get update'") 
+1

Nie można tego uruchomić. Musiał użyć opcji -e, jak sugerowano powyżej. – mastash3ff