从配置文件中读取python ttk样式

时间:2015-03-18 05:51:29

标签: python tkinter styles ttk configparser

使用python ttk和ConfigParser引出了以下问题。

我想使用配置文件使样式在每个用户使用期间都适用 - 不仅是那些有权访问源的用户。

在我的python脚本(Python 2.7)中使用硬编码部分的ttk-styles就像魅力一样

def LoadStyles(self):
  s=ttk.Style()

  if not os.path.exists("Styles.cfg"):
     s.configure('TFrame', background='white')
     s.configure('Dark.TFrame', background='#292929')
  else:
     config=ConfigParser.RawConfigParser()
     config.read("Styles.cfg")

     for section in config.sections():
        for (key, val) in config.items(section):
           try:
              s.configure(section, key="%s"%val)
           except:
              print("Error Parsing Styles Config File:  [%s].%s = %s"%(section, key, val))

使用配置文件(下面的内容)会导致所有帧的白色背景,以及声明为

的帧
self.loginFrame=ttk.Frame(self, style='Dark.TFrame')

编辑:它们不是白色但未填充(默认填充)。

样式化是在加载小部件之前完成的,硬编码或配置文件。

我只是不知道我被困在哪里,手册和SO搜索只是没有给我任何答案...

[TFrame]
background = "white"
[Dark.TFrame]
background = "#292929"

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

最后我得到了解决方案:

问题在于"关键"被写成风格的关键字。 例如 {'key': '#292929'} 可以使用

读取此数据
print(s.configure(section))

之后

s.configure(section, key="%s"%val)

关键字拆包是线索: (非常感谢SO

for section in config.sections():
    for (key, val) in config.items(section):
        try:
            test={ "%s" % key : "%s" % val }
            s.configure(section, **test)
        except:
            print("Error Parsing Styles Config File:")
            print("   [%s].%s = %s"%(section, key, val))

现在也可以使用从配置文件中读取的样式。