ubuntu Linux中的Tkinter外观(主题)

hrirmatl  于 2022-11-28  发布在  Linux
关注(0)|答案(5)|浏览(191)

我知道Tkinter不是那么现代,不是那么酷,也许更好地使用PyQt或等。
但有趣的是,我可以Tkinter看起来不那么丑陋的Ubuntu(Linux).看起来,brew版本(在OS X)的Python的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主题或者至少是更好的主题?

  • 谢谢-谢谢
xj3cbfub

xj3cbfub1#

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

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

所以你可以在你的Tkinter版本中使用“clam”、“alt”、“default”、“classic”主题。
在尝试了所有的方法后,我认为最好的方法是“clam”。你可以用这个方法或其他方法来使用它:

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()

结果:

OS X使用预编译的主题“aqua”,因此部件看起来更好。
此外,Ttk部件不支持纯Tkinter所支持的所有选项。

91zkwejq

91zkwejq2#

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

from tkinter import *
from tkinter import ttk

之后,您应该使用tkinter小部件,如下所示-label=ttk.Label()button = ttk.Button()

xmq68pz9

xmq68pz93#

不要将样式硬编码到应用程序中。

  1. Choice theme
    1.安装tcl-ttkthemespython3-ttkthemes套件。
    1.将*TkTheme: your_theme_name加到~/.Xresources上。
    1.重新加载X服务器或执行:xrdb -merge ~/.Xresources && source ~/.profile
zte4gxcn

zte4gxcn4#

如果您想使用ttk而不是常规的Tki小部件,请参阅文档:

from Tkinter import *
from ttk import *

几个ttk小部件(按钮、检查按钮、条目、框架、标签、标签框架、菜单按钮、窗格窗口、单选按钮、比例和滚动条)将自动替换Tk小部件。
你似乎没有使用ttk中没有的其他小工具。所以这应该会对你有帮助,并为你启用主题ttk。如果你想检查哪些主题是可用的,以及如何检查一个主题,看看here

k0pti3hp

k0pti3hp5#

ttktemes是一个有25个主题的模块,您可以轻松地在ttk小工具中应用所有主题。
使用以下命令安装模块:-
指令:-

  1. pip在cmd或powershell中安装ttktemes(如果在Windows中)
    2.pip3在终端中安装ttktemes(如果在Linux中)
    并将安装ttktemes模块
    以下是一个示例:
# 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()

相关问题