tkk.Frame中奇怪的背景外观

时间:2018-02-28 01:19:55

标签: python tkinter

我在tkinter发现了一个异常现象。我在下面附上了我的剧本以显示异常。

运行此脚本,我在我的系统(Ubuntu 16.04.03)上发现ttk.Frame的背景看起来很奇怪。如果我将鼠标指针移入和移出ttk.Frame,背景外观可能会改变并出现乱码(例如,可能会出现来自其他背景窗口的背景,可能会出现奇怪的颜色模式,....)。

经过一些调查,我发现通过将background='light purple'替换为background='white',异常消失,ttk.Frame外观的行为与定义的一样。也就是说,故障是由使用tkinter无法识别的背景/颜色名引起的。

问题:

  1. 在Mac,Windows或其他Linux系统中是否会出现此异常?

  2. tkinter接受的有效背景名称是什么?我不是 能够在tkinter的__init__.pyttk.py中找到它。哪里可以 我找到了吗?

  3. 我认为tkinter需要更强大的背景名称检查例程 缓解这种异常现象。我该关注谁?
  4. 测试脚本:

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    
    import tkinter as tk
    import tkinter.ttk as ttk
    
    
    class App(ttk.Frame):
    
        def __init__(self, parent=None, *args, **kwargs):
    
            style=ttk.Style()
            style.configure('App.TFrame', background='light purple')
    
            ttk.Frame.__init__(self, parent, style='App.TFrame', borderwidth=10,
                               relief='raised', width=200, height=200)
            self.parent = parent
            self.parent.geometry('300x300')
    
    
    if __name__ == '__main__':
        root = tk.Tk()
        app = App(root)
        app.grid(row=0, column=0, sticky='nsew')
        app.grid_propagate(0)
    
        root.mainloop()
    

    StrangettkFrameBackground StrangettkFrameBackground2

1 个答案:

答案 0 :(得分:3)

在Win 10,3.7.0b1上,没有给出的背景为白色,识别的背景是什么,未知的背景('浅紫色'或'xyz')是黑色。至于识别的颜色名称:

NMT 8.5参考文献说“颜色'白色','黑色','红色','绿色','蓝色','青色','黄色'和'洋红色'将永远是其他名称可能有效,具体取决于您当地的安装。“。

tcl/tk 8.6文档列出了数百种颜色名称(但不是“淡紫色”!)以及一些特定于MacOS和Windows的颜色名称。

相关问题