LINUX.ORG.RU

Tkinter (theme)

 , ,


0

3

Привет, ребятки

Хотел вот спросить есть ли возможность превратить приложение на Tkinter не в такое страшное на ОС Linux.

Вот примером на маке оно выглядит так: http://i.stack.imgur.com/drvgk.png

А вот на линуксе страшновато:

http://i.stack.imgur.com/eRNJK.png

Вот мой код

from Tkinter import *
import ttk

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

Был бы благодарен, если кто-то показал конкретное применение к этому коду.

★★★★★

А по моему нормально выглядит.

b0c0813f ()

Выглядит неплохо. Я иногда после убанты гляну на какие-нибудь минидистры, так там действительно убожество на каком-нибудь оупенбоксе в оформлении.

Virtuos86 ★★★★★ ()

Для кнопок можно использовать изображения:

img = PhotoImage(file="filename.gif")
self.button = Button(frame, image=img, width=w, height=h, command=frame.quit)
self.button.image = img
Цвета фрейма, лейбла и поля задаются через соответствующие свойства. RTFM.

metrokto ★★ ()

А нужен именно Tkinter и никак иначе? Там вроде только если стили ковырять. Ну а если вручную цвета задавать, такое приложение далеко не в каждую системную тему впишется и будет, в итоге, где-то так же плохо выглядеть.

Понимаю, что это не ответ на вопрос в шапке, но всё же.

#!/usr/bin/python
# -*- coding: utf-8 -*-

import wx

class MainFrame(wx.Frame):
    def __init__(self, *args, **kwargs):
        super(MainFrame, self).__init__(*args, **kwargs)
        
        self.SetTitle("Just my example")
        self.init_ui()
      
        self.btn_hello.Bind(wx.EVT_BUTTON, self.write_slogan)
        self.btn_quit.Bind(wx.EVT_BUTTON, self.quit_app)
        
        self.SetInitialSize()
        self.Show(True)
    
    def init_ui(self):
        sizer = wx.GridSizer(2, 2)
        
        st = wx.StaticText(self, wx.ID_ANY, "Type very long text")
        st.Wrap(-1)
        
        text_ctrl = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString)   
        
        self.btn_hello = wx.Button(self, wx.ID_ANY, "Hello")
        self.btn_quit = wx.Button(self, wx.ID_ANY, "Quit")
        
        sizer.AddMany([
            (st, 0, wx.ALL | wx.ALIGN_CENTER, 5),
            (text_ctrl, 0, wx.ALL | wx.ALIGN_CENTER, 5),
            (self.btn_hello, 0, wx.ALL | wx.ALIGN_CENTER, 5),
            (self.btn_quit, 0, wx.ALL | wx.ALIGN_CENTER, 5)
        ])
        
        self.SetSizer(sizer)
        self.Layout()
        
    def write_slogan(self, event):
        print "wxPython is easy to use"
    
    def quit_app(self, event):
        print "bye bye"
        self.Destroy()
        
def main():
    app = wx.App()
    MainFrame(None)
    app.MainLoop()
    
if __name__ == "__main__":
    main()
Кода, конечно, больше. Но и на будущее функционала wxPython предложить может куда больше.

xxblx ★★★ ()

Да разница-то только в том, что цвет фона на Mac OS X — белый (можно сделать root.configure(background='white') ), а цвет заголовка — сероватый (за это отвечает твой Window Manager).

Однако Tkinter берёт эти настройки откуда-то из иксов, можно там что-нибудь подкрутить. Просто и GTK, и Qt имеют собственные темы, поэтому на эти настройки внимания не обращают.

proud_anon ★★★★★ ()

честно говоря и тот и другой мини-пример выглядят как говно :( только в одном случае округлое, а в другом квадратное

темы виджетов тут мало помогут - надо сначала с «вёрсткой» (геометрией), use-case и hig (не любят тут такое слово, но оно правильное) разбираться - какие элементы где расположить, как сгруппировать и выровнить..а то даже на таком минимуме у вас всё невпопад

где-то так..

MKuznetsov ★★★★★ ()
Ответ на: комментарий от anonymous

та что-то не совсем понятно как это использовать.

ipeacocks ★★★★★ ()
Ответ на: комментарий от Ceiling_QB

та хоть что-то бы подхватило. Суть не в конкретной теме, а не в такой вырвиглазности.

ipeacocks ★★★★★ ()
Ответ на: комментарий от MKuznetsov

Причем тут расположение виджетов если я спрашиваю о их внешнем виде?

ipeacocks ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.