Linux中的Tkinter外观(主题)

时间:2015-02-16 23:09:53

标签: python linux ubuntu tkinter ttk

我知道Tkinter不是那么现代,不太酷,也许更好地使用PyQt等。

但有趣的是,Tkinter在Ubuntu(Linux)中看起来并不那么难看。看起来使用内置主题编译的python&#t; tkinter的brew版本(在OS X中)看起来不错:

Mac OS X Tkinter

但Ubuntu的Tkinter让我哭泣:

Ubuntu Tkinter

我已经读过,为了好主题,我需要使用ttk,但我不确切知道如何。我的代码如下:

from Tkinter import *

class App():
  def __init__(self, master):
    frame = Frame(master)
    frame.pack()

    master.title("Just my example")
    self.label = Label(frame, text="Type very long text:")

    self.entry = Entry(frame)

    self.button = Button(frame,
                         text="Quit", fg="red", width=20,
                         command=frame.quit)


    self.slogan = Button(frame,
                         text="Hello", width=20,
                         command=self.write_slogan)

    self.label.grid(row=0, column=0)
    self.entry.grid(row=0, column=1)
    self.slogan.grid(row=1, column=0)
    self.button.grid(row=1, column=1)

  def write_slogan(self):
    print "Tkinter is easy to use!"

root = Tk()
app = App(root)
root.mainloop()

如何应用标准的ubuntu主题或至少更好的主题?

感谢。

4 个答案:

答案 0 :(得分:9)

使用以下命令可以看到ttk的所有可用主题:

$ python
>>> import ttk
>>> s=ttk.Style()
>>> s.theme_names()
('clam', 'alt', 'default', 'classic')

所以你可以使用' clam',' alt','默认',' classic'使用您的Tkinter版本的主题。

在尝试了所有这些之后,我认为最好的是“蛤蜊”。您可以通过以下方式使用此项或任何其他方式:

from Tkinter import *
from ttk import *

class App():
  def __init__(self, master):
    frame = Frame(master)
    frame.pack()

    master.title("Just my example")
    self.label = Label(frame, text="Type very long text:")

    self.entry = Entry(frame)

    self.button = Button(frame,
                         text="Quit", width=15,
                         command=frame.quit)


    self.slogan = Button(frame,
                         text="Hello", width=15,
                         command=self.write_slogan)

    self.label.grid(row=0, column=0)
    self.entry.grid(row=0, column=1)
    self.slogan.grid(row=1, column=0, sticky='e')
    self.button.grid(row=1, column=1, sticky='e')

  def write_slogan(self):
    print "Tkinter is easy to use!"

root = Tk()
root.style = Style()
#('clam', 'alt', 'default', 'classic')
root.style.theme_use("clam")

app = App(root)
root.mainloop()

结果:

enter image description here

OS X使用预编译主题" aqua"所以小部件看起来更好。

此外,Ttk小部件不支持纯Tkinter所做的所有选项。

答案 1 :(得分:1)

要使用ttk,你必须导入它。

from tkinter import *
from tkinter import ttk

之后你应该使用像这样的tkinter小部件 - label=ttk.Label()button = ttk.Button()

答案 2 :(得分:0)

如果您想使用ttk而不是常规的Tki小部件,请从documentation开始:

from Tkinter import *
from ttk import *
  

几个ttk小部件(按钮,检查按钮,条目,框架,标签,   LabelFrame,Menubutton,PanedWindow,Radiobutton,Scale和Scrollbar)   将自动替换Tk小部件。

您似乎没有使用ttk未涵盖的任何其他小部件。所以这应该有助于并为您启用主题ttk。如果您想查看可用的主题以及如何检查主题,请查看here

答案 3 :(得分:0)

ttkthemes 是一个具有 25 个可用主题的模块,您可以轻松地将所有主题应用到 ttk 小部件中。

使用以下命令安装模块:-

命令:-

1.pip 在 cmd 或 powershell 中安装 ttkthemes(如果在 Windows 中)

2.pip3 在终端安装 ttkthemes(如果是 Linux)

将安装 ttkthemes 模块

这是一个例子:

# example from: https://ttkthemes.readthedocs.io/en/latest/example.html
from tkinter import ttk  # Normal Tkinter.* widgets are not themed!
from ttkthemes import ThemedTk
window = ThemedTk(theme="arc")# you can set any available theme. 
ttk.Button(window, text="Quit", command=window.destroy).pack()
window.mainloop()