Linux 中的 Tkinter 外观(主题)
Tkinter look (theme) in Linux
我知道 Tkinter 不是那么现代,不是那么酷,使用 PyQt 等可能更好
但是 Tkinter 在 Ubuntu (Linux) 中看起来不那么丑对我来说很有趣。看起来 python 的 Tkinter 的 brew 版本(在 OS X 中)使用内置主题编译并且看起来不错:
但是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 主题或至少更好的主题?
谢谢。
来自 documentation 如果您想使用 ttk 而不是常规的 Tki 小部件:
from Tkinter import *
from ttk import *
several ttk widgets (Button, Checkbutton, Entry, Frame, Label,
LabelFrame, Menubutton, PanedWindow, Radiobutton, Scale and Scrollbar)
will automatically substitute for the Tk widgets.
您似乎没有使用 ttk 未涵盖的任何其他小部件。所以这应该有助于为您启用主题 ttk。如果您想查看可用的主题以及如何查看主题,请同时查看 here。
可以使用以下命令查看 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 支持的所有选项。
要使用 ttk,您必须导入它。
from tkinter import *
from tkinter import ttk
之后你应该像这样使用 tkinter 小部件-label=ttk.Label()
或 button = ttk.Button()
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()
我知道 Tkinter 不是那么现代,不是那么酷,使用 PyQt 等可能更好
但是 Tkinter 在 Ubuntu (Linux) 中看起来不那么丑对我来说很有趣。看起来 python 的 Tkinter 的 brew 版本(在 OS X 中)使用内置主题编译并且看起来不错:
但是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 主题或至少更好的主题?
谢谢。
来自 documentation 如果您想使用 ttk 而不是常规的 Tki 小部件:
from Tkinter import *
from ttk import *
several ttk widgets (Button, Checkbutton, Entry, Frame, Label, LabelFrame, Menubutton, PanedWindow, Radiobutton, Scale and Scrollbar) will automatically substitute for the Tk widgets.
您似乎没有使用 ttk 未涵盖的任何其他小部件。所以这应该有助于为您启用主题 ttk。如果您想查看可用的主题以及如何查看主题,请同时查看 here。
可以使用以下命令查看 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 支持的所有选项。
要使用 ttk,您必须导入它。
from tkinter import *
from tkinter import ttk
之后你应该像这样使用 tkinter 小部件-label=ttk.Label()
或 button = ttk.Button()
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()