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テーマまたは少なくともより良いテーマを適用する方法は?
ありがとう。
Ttkの利用可能なすべてのテーマは、次のコマンドで確認できます。
$ python
>>> import ttk
>>> s=ttk.Style()
>>> s.theme_names()
('clam', 'alt', 'default', 'classic')
したがって、Tkinterのバージョンでは、「clam」、「alt」、「default」、「classic」テーマを使用できます。
それらすべてを試した後、私は最高のものは「ハマグリ」だと思います。これは、次の方法で使用できます。
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はプリコンパイルされたテーマ「アクア」を使用しているため、ウィジェットの見栄えが良くなります。
また、Ttkウィジェットは純粋なTkinterがサポートするすべてのオプションをサポートしているわけではありません。
Ttkを使用するには、それをインポートする必要があります。
_from tkinter import *
from tkinter import ttk
_
その後、次のようなtkinterウィジェットを使用する必要があります-label=ttk.Label()
またはbutton = ttk.Button()
From documentation 通常のTkiウィジェットの代わりにttkを使用したい場合:
from Tkinter import *
from ttk import *
いくつかのttkウィジェット(Button、Checkbutton、Entry、Frame、Label、LabelFrame、Menubutton、PanedWindow、Radiobutton、Scale、およびScrollbar)は、Tkウィジェットの代わりに自動的に使用されます。
Ttkでカバーされていない他のウィジェットを使用していないようです。したがって、これはテーマ化されたttkを支援し、有効にする必要があります。利用可能なテーマとテーマの確認方法を確認したい場合は、 こちら もご覧ください。