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
mfg Yoschi
Mit Python über Gconftool SplashScreen ändern
- 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!
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!
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
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''')
Danke für den Tipp Dictonarys werde ich mir mal ansehenWie wärs mit raw_input()? Oder was genau meinst Du? (abgesehen davon, dass man den bisherigen Code mit Dictionarys wesentlich einfacher machen könnte)
-> Anwedungen -> Systemwerkzeuge -> Konfigurationseditor ->Oder was genau meinst Du?
/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.
- 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!
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!
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Wird wohl etwa so aussehen:
Apropos: du kannst statt 0 und 1, wer hätte es gedacht, auch True und False verwenden.
Code: Alles auswählen
splash = raw_input("The path? ")
client.set_string(key, splash)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Das wusste ich schon aber gibt es einen Befehl für Gegenteil?Apropos: du kannst statt 0 und 1, wer hätte es gedacht, auch True und False verwenden.
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?
Code: Alles auswählen
In [378]: not True
Out[378]: False
In [379]: not False
Out[379]: True
So:
Code: Alles auswählen
>>> a = True
>>> a ^ True
False
>>> a = False
>>> a ^ True
True
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
mfg
noise, der gerade ein wenig geschockt ist...
``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
mfg
noise, der gerade ein wenig geschockt ist...
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.
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.
Da kann ich statt not True gleich False verwenden.BlackJack hat geschrieben:Code: Alles auswählen
In [378]: not True Out[378]: False In [379]: not False Out[379]: True
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.
Dann mach halt eine Funktion draus:
oder nimm aus dem "operator"-Modul die Funktion "not_".
Code: Alles auswählen
lambda x: not x
Du musst es nicht "kontrollieren", du brauchst einfach nur das Gegenteil des aktuellen Zustandes - andere Möglichkeiten gibt es ja eh nicht.Yoschi93 hat geschrieben:Da kann ich statt not True gleich False verwenden.BlackJack hat geschrieben:Code: Alles auswählen
In [378]: not True Out[378]: False In [379]: not False Out[379]: True
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.
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