Seite 1 von 1
Linux Prorgramm starten
Verfasst: Mittwoch 4. Mai 2011, 15:51
von Hannes_1
Hallo,
als "blutiger" Anfänger mit Python habe ich gleich eine Frage.
Ich habe mir ein Fenster mit versch. Buttons angelegt.
Code: Alles auswählen
# Vertikale Box
vbox = gtk.VBox(True, 1)
button = gtk.Button("Kate")
button.show()
Welchen Code muss ich einsetzen, damit beim Drücken des Buttons ( Kate ) der Editor "Kate" gestartet wird?
Mit freundlichen Grüßen
Hannes
Re: Linux Prorgramm starten
Verfasst: Mittwoch 4. Mai 2011, 17:32
von ms4py
Du musst einen neuen Prozess starten:
Re: Linux Prorgramm starten
Verfasst: Mittwoch 4. Mai 2011, 17:41
von Hannes_1
Hallo,
vielen Dank für den Tipp.
Da ich vollkommener Neuling bin,
Code: Alles auswählen
import subprocess
# Vertikale Box
vbox = gtk.VBox(True, 1)
button = gtk.Button("Kate")
button.show()
subprocess.Popen('kate')
Ist das so richtig?
MfG
Hanes
Re: Linux Prorgramm starten
Verfasst: Mittwoch 4. Mai 2011, 17:49
von BlackJack
@Hannes_1: Nein das ist so nicht richtig -- was Dir ein einfacher Versuch es auszuführen auch gezeigt hätte.
Du solltest vielleicht erst einmal das Tutorial aus der Python-Dokumentation durcharbeiten um die Python-Grundlagen zu lernen und dann ein Gtk-Tutorial um die Grundlagen von Gtk-Programmierung zu lernen.
Re: Linux Prorgramm starten
Verfasst: Donnerstag 5. Mai 2011, 06:30
von Hannes_1
Hallo,
als Anfänger in Sachen programmierung wurde mir im LINUX-Forum folgendes gepostet:
Es gibt auch ein deutsches Forum [
http://www.python-forum.de/ ] mit vielen ziemlich kompetenten Programmierern
(von denen einige nach meiner Erfahrung aber leider nicht immer ganz so nett sind).
Ich hoffe, dass stimmt nicht.
Leider habe ich mit folgendem Zitat meine Probleme.
Du solltest vielleicht erst einmal das Tutorial aus der Python-Dokumentation
durcharbeiten um die Python-Grundlagen zu lernen und dann ein Gtk-Tutorial
um die Grundlagen von Gtk-Programmierung zu lernen.
Folgendes:
Wenn ich in einem KFZ-Forum nach der Funktion einer Lambda-Sonde frage und die Antwort bekommme,
Lerne erst mal KFZ-Mechankier, dann wird Dir das mit der Lambda-Sonde schon klar,
hilft mir dass eigentlich nicht weiter.
Ich möchte erst mal ein kleines Erfolgserlebnis um zu prüfen, ob Python was für mich ist.
Daher suche ich einen
fertigen Code. Ein kleines Fenster mit einem Button soll sich öffnen.
Wenn ich auf den Button klicke, soll der Editor KATE starten.
Mfg
Hannes
Re: Linux Prorgramm starten
Verfasst: Donnerstag 5. Mai 2011, 07:41
von cofi
Nett != arbeiterledigend.
BlackJacks Äusserung hat folgenden Hintergrund: GUI ist schwierig. Und noch schwieriger wenn man die Grundlagen wie OOP auf die GUIs aufbauen nicht verstanden hat. Hier braucht man z.B. Funktionsobjekte.
Und dann fehlen dir noch die Grundlagen zu GUI-Entwicklung und pyGTK im Besonderen, wenn du es denn wirklich schnell haben willst, fang hier an:
http://www.pygtk.org/pygtk2tutorial/ch- ... ction.html
Mit (py)GTK hab ich selbst noch nicht gearbeitet darum kann ich dir nicht sagen, wie man den Button richtig mit dem Funktionsobjekt verbindet.
Re: Linux Prorgramm starten
Verfasst: Donnerstag 5. Mai 2011, 08:20
von Leonidas
Naja, man muss halt das Clicked-Signal mit einer Callback-Funktion verbinden, die Subprocess startet. Ist jetzt echt nicht so schwer.
Re: Linux Prorgramm starten
Verfasst: Donnerstag 5. Mai 2011, 08:43
von Yaso
@ Hannes_1: Es wird einfach nicht gern gesehen, wenn Leute kommen und nach fertigen Lösungen fragen. Dieses Forum ist dazu da Leuten, die sich mit Python auseinandersetzen, zu helfen wenn sie nicht weiterkommen
nachdem diese die entsprechenden Tutorials durchgearbeitet haben, bei dem erste Erfolgserlebnise kommen
Des weiteren ist nicht klar ob du blutiger Anfänger mit Python oder allgemein Programmieren bist. Spontan sag ich mal, dass du schon ein Paar Erfahrungen mit Programmieren gesammelt hast, Python aber deiner ersten Programmiersprachen ist.
Zu deiner exakten Frage:
Welchen Code muss ich einsetzen, damit beim Drücken des Buttons ( Kate ) der Editor "Kate" gestartet wird?
Bei deinem Code weiss man auch nicht ob du "das drumherum" auch schon codiert hast. Ich nehme mal an dass du das auch schon gemacht hast, deshalb fahre ich an dieser Stelle fort (ungetestet):
Code: Alles auswählen
import subprocess
# Vertikale Box
vbox = gtk.VBox(True, 1)
button = gtk.Button("Kate")
button.connect("clicked", self.startKate)
vbox.pack_start(button)
vbox.show_all()
def startKate(self, pWidget)
# hier der code vom ms4py, da ich auf win arbeite
subprocess.Popen('kate')
Re: Linux Prorgramm starten
Verfasst: Donnerstag 5. Mai 2011, 09:04
von BlackJack
@Hannes_1: Wie kannst Du ein Erfolgserlebnis haben wenn Dir jemand fertigen Code gibt? Da hast Du doch gar nichts selber erreicht?
Wenn Du wissen willst ob Python etwas für Dich ist, dann musst Du Dich schon selbst mit der Sprache auseinander setzen. Am besten halt mit den Grundlagen und nicht gleich mit GUI-Programmierung. Das würde ich einem Anfänger nämlich nicht unbedingt für den Start empfehlen.
Man fängt normalerweise mit den Grundlagen an. Linear ablaufender Code. Dann die Kontrollstrukturen für bedingt ausgeführten Code (``if``/``else``) und Wiederholungen (``for``/``while``). Die Grunddatenstrukturen kennenlernen. Dann Aufteilen von Programmen in Funktionen. Ausnahmen und ihre Behandlung. Objektorientierte Programmierung. Und dann erst GUIs, weil damit dann ereignisorientierte Programmierung neu zu den *ganzen anderen Sachen* hinzu kommt, die alle aufeinander aufbauen. Wenn Du mit GUI Programmierung den Anfang machst, hast Du diese ganzen, teils komplexen Themen auf einmal am Hals.
Ansonsten würde man in einer echten Anwendung die GUI wahrscheinlich eher mit Glade entwerfen, statt per Hand zu schreiben. Ob Dir die Python/Gtk+-Kombination zusagt, sieht man also eher an einem Stück Code der Glade verwendet. Die mit Glade erzeugte UI-Beschreibung:
Code: Alles auswählen
<?xml version="1.0"?>
<interface>
<requires lib="gtk+" version="2.16"/>
<!-- interface-naming-policy project-wide -->
<object class="GtkWindow" id="window">
<property name="border_width">10</property>
<property name="title" translatable="yes">Start Kate Window</property>
<signal name="destroy" handler="on_window_destroy"/>
<child>
<object class="GtkButton" id="start_kate">
<property name="label" translatable="yes">_Kate</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_underline">True</property>
<signal name="clicked" handler="on_start_kate_clicked"/>
</object>
</child>
</object>
</interface>
Und das passende Python-Programm dazu:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from subprocess import Popen
import gtk
class App(object):
def __init__(self):
builder = gtk.Builder()
builder.add_from_file('test.builder')
self.window = builder.get_object('window')
builder.connect_signals(self)
def on_window_destroy(self, _window):
gtk.main_quit()
def on_start_kate_clicked(self, _button):
Popen('kate')
def main():
app = App()
app.window.show_all()
gtk.main()
if __name__ == '__main__':
main()