Farbcode mit ConfigObj speichern und auslesen
Verfasst: Freitag 28. November 2008, 08:51
Hallo,
ich möchte in einem Config-File mit ConfigObj Farbangaben (z.B. (255, 0, 0, 255))speichern und natürlich auch wieder auslesen. Leider wird der ausgelesene Wert nicht weiter beachtet. Beim Setzen der Farbe aus der cfg-Datei passiert nix.
Hier ein Beispiel:
Anscheinend wird der Farbcode in einem anderen Format zurückgegeben. Wenn das Programm startet, wird die Farbe des ersten Button nicht gesetzt. Wie kann ich das ändern?
Grüße
Mawilo
ich möchte in einem Config-File mit ConfigObj Farbangaben (z.B. (255, 0, 0, 255))speichern und natürlich auch wieder auslesen. Leider wird der ausgelesene Wert nicht weiter beachtet. Beim Setzen der Farbe aus der cfg-Datei passiert nix.
Hier ein Beispiel:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import wx
import os.path
import sys
from configobj import ConfigObj
CFG = './test.cfg'
class MainWindow(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, -1, title='Test ConfigObj')
panel = wx.Panel(self)
self.button = wx.Button(panel, -1, size=(100, 21))
self.save = wx.Button(panel, -1, label='Speichern', size=(100, 21))
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.button)
sizer.Add(self.save)
panel.SetSizer(sizer)
self.Bind(wx.EVT_BUTTON, self.changeColor, self.button)
self.Bind(wx.EVT_BUTTON, self.writeConfig, self.save)
self.readConfig()
def changeColor(self, event=None):
dialog = wx.ColourDialog(None)
dialog.GetColourData().SetChooseFull(True)
if dialog.ShowModal() == wx.ID_OK:
data = dialog.GetColourData()
color = data.GetColour().Get()
self.button.SetBackgroundColour(color)
dialog.Destroy()
def writeConfig(self, event=None):
config = ConfigObj()
config.filename = CFG
config['Colour'] = {}
config['Colour']['button'] = self.button.GetBackgroundColour()
config.write()
def readConfig(self):
config = ConfigObj(CFG)
print config['Colour']['button']
self.button.SetBackgroundColour(config['Colour']['button'])
def main():
app = wx.PySimpleApp()
frame = MainWindow(None)
frame.Center()
frame.Show()
app.MainLoop()
if __name__ == '__main__':
main()
Grüße
Mawilo