簡體   English   中英

從配置文件中讀取python ttk樣式

[英]Reading python ttk Styles from configuration file

使用python ttk和ConfigParser會導致以下問題。

我想使用配置文件使樣式在使用期間適合每個用戶-不僅限於有權訪問源的樣式。

在我的python腳本(Python 2.7)中使用來自硬編碼部分的ttk樣式就像一個魅力

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 Search並沒有給我關於那一個的任何答案。

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

任何幫助都非常感謝。

終於我得到了解決方案:

問題是“鍵”被作為關鍵字寫到樣式中。 例如{'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))

現在,也可以使用從配置文件讀取的樣式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM