Mit Python über Gconftool SplashScreen ändern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Yoschi93
User
Beiträge: 17
Registriert: Sonntag 20. Januar 2008, 13:19

Moin also ich sitze bei einer Sache fest :(
Ich möchte dass wenn ich zb Menüpunkt 1 auswähle dass man selber einen neuen Pfad für den SplashScreen eingeben soll.

Das Problem ist nur ich weiss nicht wie man das ändern sollen ich kann es nur so machen dass er ein Pfad aus der Funktionsammlung nehmen soll aber ich will es so machen dass der Anwender es bestimmt.

Edit : Wenn ihr mir Links gibt wo ich sowas suchen kann oder nachlesen oder mir helfen kann dann immerher damit :D

mfg Yoschi
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ich kenne mich mit Gnome nicht aus und habe grad nur ergooglet, das dieses Tool wohl en Kommandozeilentool ist, mit dem man Einstellungen an dieser Gnome-Registry verändern kann. Ist das so richtig?

Evtl. solltest Du doch mal ein wenig mehr Infos darüber geben, was Du genau willst und was Du bsiher versucht hast.

Ich habe da z.B. von einer GUI nichts gesehen, oder worauf beziehst Du Dich mit "Eingabe"?

Fragen über Fragen ... ein schlechtes Zeichen, wenn man Hilfe erhalten will ;)

Also, gib mal mehr und bessere Infos, dann findet sich sicher eine Hilfe!
Yoschi93
User
Beiträge: 17
Registriert: Sonntag 20. Januar 2008, 13:19

So hier ist erstmal der Code zu verständlichkeit ;)

Wie ihr sieht ist dieses Programm nur dazu da um Bequemlich Änderungen an Gconf zu machen.
Jetzt will ich machen wenn ich de Option SplashScrenn verändern nehme dass ich einen neuen Pfad eingeben muss zu den neuen SplashScreen Bild.

Jetzt kommt das Problem ich weiss nicht wie man das realisieren sollte.

Wichtig ist ich will keine GUI haben ;)

Code: Alles auswählen

#!/usr/bin/python
beenden                     = 0

home_ordner_einblenden      = 1
home_ordner_ausblenden      = 2

papierkorb_einblenden       = 3
papierkorb_ausblenden       = 4

computer_einblenden         = 5
computer_ausblenden         = 6

mount_laufwerke_einblenden  = 7
mount_laufwerke_ausblenden  = 8

splashscreen_verändern = 9

import gconf

# Auswahlmenue
auswahlmenue = int(raw_input('''Waehlen sie bitte was sie machen wollen
      Desktop
   1. Persoenlicher Ordner einblenden
   2. Persoenlicher Ordner ausblenden

   3. Papierkorb einblenden
   4. Papierkorb ausblenden

   5. Computer einblenden
   6. Computer ausblenden

   7. Eingebundene Laufwerke einblenden
   8. Eingebundene Laufwerke ausblenden

   9. Splash Screen verändern

   Mit 0 beenden sie das Programm
= '''))

# Funktionsammlung
def ausblenden(key):
    client = gconf.client_get_default()
    client.set_bool(key, 0)
    
def einblenden(key):
    client = gconf.client_get_default()
    client.set_bool(key, 1)

# /Funktionsammlung

if auswahlmenue == home_ordner_einblenden:
   einblenden('''/apps/nautilus/desktop/home_icon_visible''')

if auswahlmenue == home_ordner_ausblenden:
   ausblenden('''/apps/nautilus/desktop/home_icon_visible''')

if auswahlmenue == papierkorb_einblenden:
   einblenden('''/apps/nautilus/desktop/trash_icon_visible''')

if auswahlmenue == papierkorb_ausblenden:
   ausblenden('''/apps/nautilus/desktop/trash_icon_visible''')

if auswahlmenue == computer_einblenden:
   einblenden('''/apps/nautilus/desktop/computer_icon_visible''')

if auswahlmenue == computer_ausblenden: 
   ausblenden('''/apps/nautilus/desktop/computer_icon_visible''')

if auswahlmenue == mount_laufwerke_einblenden:
   einblenden('''/apps/nautilus/desktop/volumes_visible''')

if auswahlmenue == mount_laufwerke_ausblenden:
   ausblenden('''/apps/nautilus/desktop/volumes_visible''')
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wie wärs mit raw_input()? Oder was genau meinst Du? (abgesehen davon, dass man den bisherigen Code mit Dictionarys wesentlich einfacher machen könnte)
Yoschi93
User
Beiträge: 17
Registriert: Sonntag 20. Januar 2008, 13:19

Wie wärs mit raw_input()? Oder was genau meinst Du? (abgesehen davon, dass man den bisherigen Code mit Dictionarys wesentlich einfacher machen könnte)
Danke für den Tipp Dictonarys werde ich mir mal ansehen :D
Oder was genau meinst Du?
-> Anwedungen -> Systemwerkzeuge -> Konfigurationseditor ->
/apps/gnome-session/options/splash_image -> Anklichen und nuen Pfad schreiben.

Dass will ich mit Python umsetzen so wie ich das mit den ausblenden und einblenden gemacht habe der Unterschied ist nur dass der Benutzer den Pfad selber eingibt und nicht aussucht.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Diese Angabe nützt mir nichts, weil ich kein Gnome nutze ;)

Ich verstehe immer noch nicht, wo das Problem liegt! Du musst doch nur den User bitten, eine Datei anzugeben. Diese holst Du Dir per raw_input() und übergibst sie dann der aus dem Modul zuständigen Funtkion / Methode!
Yoschi93
User
Beiträge: 17
Registriert: Sonntag 20. Januar 2008, 13:19

und übergibst sie dann der aus dem Modul zuständigen Funtkion / Methode!
Wie mache ich das übergeben?
Wenn du es nicht sagen willst so verweise bitte wo ich das nachlesen kann..
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Wird wohl etwa so aussehen:

Code: Alles auswählen

splash = raw_input("The path? ")
client.set_string(key, splash)
Apropos: du kannst statt 0 und 1, wer hätte es gedacht, auch True und False verwenden.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Yoschi93
User
Beiträge: 17
Registriert: Sonntag 20. Januar 2008, 13:19

Habs jetzt angepasst und es funktioniert :D
Danke für eure Hilfe :)
Yoschi93
User
Beiträge: 17
Registriert: Sonntag 20. Januar 2008, 13:19

Apropos: du kannst statt 0 und 1, wer hätte es gedacht, auch True und False verwenden.
Das wusste ich schon :D aber gibt es einen Befehl für Gegenteil?
Das heißt Gconftool (also über Python) kuckt ob es true oder false ist es true macht er es auf den Gegenteil false und false auf true.
So müsste man nicht extra 2.Menüpunkte machen.

Währe das möglich?
BlackJack

Code: Alles auswählen

In [378]: not True
Out[378]: False

In [379]: not False
Out[379]: True
Jan-Peer
User
Beiträge: 166
Registriert: Dienstag 2. Oktober 2007, 10:55

So:

Code: Alles auswählen

>>> a = True
>>> a ^ True
False
>>> a = False
>>> a ^ True
True
noise
User
Beiträge: 62
Registriert: Donnerstag 7. Februar 2008, 00:15

Oha, Bitweise Operator auf booleans? Davon würde ich ganz klar abraten. Nicht nur weil es Unpythonisch ist, sondern auch jedweder Logik entbehrt.
``True`` und ``False`` sollte nicht in diesem Kontext mit 1 und 0 gleichgesetzt werden. Das sind eigenständige singelton Objekte und keine alias für die integer 1 und 0. Lange rede kurzer Sinn, BlackJack's Variante ist vorzuziehen.

Kann mir vielleicht einer erklären warum das in Python dennoch möglich ist? Oder habe ich vielleicht gerade mist geschrieben und es sind tatsächlich aliase, was mich dann doch stark wundern würde :shock:

mfg
noise, der gerade ein wenig geschockt ist...
BlackJack

Es sind keine Aliasse sondern `bool` ist eine Unterklasse von `int`. Des weiteren ist ``^`` ist per se kein "bitwise"-Operator genauso wenig wie ``+`` eine Addition von Zahlen ist. Diese Operatoren sind, was immer die beteiligten Objekte dafür implementiert haben. Und das ``^`` hier nicht auf Zahlen operiert und `True`/`False` nicht einfach Aliasse für 1/0 sind, sieht man daran, dass das Ergebnis wieder eine `bool`-Instanz ist.

Da dieser Operator auf `bool` definiert ist, und zwar anders als auf der Basisklasse `int`, scheint dessen Verwendung durchaus vorgesehen. Und wieso entbehrt ein Exclusiv-Oder auf Wahrheitswerten jedweder Logik? Das ist eine ganz normale und übliche Operation in Boole'scher Logik.
Yoschi93
User
Beiträge: 17
Registriert: Sonntag 20. Januar 2008, 13:19

BlackJack hat geschrieben:

Code: Alles auswählen

In [378]: not True
Out[378]: False

In [379]: not False
Out[379]: True
Da kann ich statt not True gleich False verwenden.

Mir gehts darum dass er kontrolliert was fürn Wert zur Zeit beim GConf ist wenn dort True ist stellt er auf False um wenn auf False stellt er auf True um.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Dann mach halt eine Funktion draus:

Code: Alles auswählen

lambda x: not x
oder nimm aus dem "operator"-Modul die Funktion "not_".
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Yoschi93 hat geschrieben:
BlackJack hat geschrieben:

Code: Alles auswählen

In [378]: not True
Out[378]: False

In [379]: not False
Out[379]: True
Da kann ich statt not True gleich False verwenden.

Mir gehts darum dass er kontrolliert was fürn Wert zur Zeit beim GConf ist wenn dort True ist stellt er auf False um wenn auf False stellt er auf True um.
Du musst es nicht "kontrollieren", du brauchst einfach nur das Gegenteil des aktuellen Zustandes - andere Möglichkeiten gibt es ja eh nicht.
Also reicht BlackJacks Tipp völlig aus - lambda braucht man hier nicht:

Code: Alles auswählen

>>> alt = True
>>> neu = not alt
>>> neu
False
>>> ganzneu = not neu
>>> ganzneu
True
Das ist genau das, was du wolltest.
Antworten