web-dev-qa-db-ja.com

LinuxでのTkinterルック(テーマ)

Tkinterはそれほど現代的ではなく、それほどクールではなく、PyQtなどを使用する方が良いかもしれません。

しかし、TkinterがUbuntu(Linux)でそれほど醜く見えないのは私にとって興味深いことです。組み込みのテーマでコンパイルされたPythonの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テーマまたは少なくともより良いテーマを適用する方法は?

ありがとう。

9
ipeacocks

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

結果:

enter image description here

OS Xはプリコンパイルされたテーマ「アクア」を使用しているため、ウィジェットの見栄えが良くなります。

また、Ttkウィジェットは純粋なTkinterがサポートするすべてのオプションをサポートしているわけではありません。

8
ipeacocks

Ttkを使用するには、それをインポートする必要があります。

_from tkinter import *
from tkinter import ttk
_

その後、次のようなtkinterウィジェットを使用する必要があります-label=ttk.Label()またはbutton = ttk.Button()

1
sam

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を支援し、有効にする必要があります。利用可能なテーマとテーマの確認方法を確認したい場合は、 こちら もご覧ください。

0
Marcin