LINUX.ORG.RU

PyGTK, scrolled window, так и должно быть?


0

1

Приветствую, экспериментирую с PyGTK, но получается какая-то ерунда, так и должно быть? Откуда такие зазоры возле скрол-баров и почему статус-бар тоже закрашивается? http://i33.fastpic.ru/big/2014/0209/bb/2e29077b77a132927af76fda1c987ebb.png

вот код:

import gtk
import 
class PyApp(gtk.Window):

    def __init__(self):
        super(PyApp, self).__init__()

        self.set_title("example")
        self.set_size_request(800, 600)
        self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(35000, 35000, 35000))
        self.set_position(gtk.WIN_POS_
        # --- Main menu ---
        mb = gtk.MenuBar()

        filemenu = gtk.Menu()
        filem = gtk.MenuItem("_File")
        filem.set_submenu(filemenu)

        agr = gtk.AccelGroup()
        self.add_accel_group(agr)

        newi = gtk.ImageMenuItem(gtk.STOCK_NEW, agr)
        key, mod = gtk.accelerator_parse("<Control>N")
        newi.add_accelerator("activate", agr, key, mod, gtk.ACCEL_VISIBLE)
        filemenu.append(newi)

        openm = gtk.ImageMenuItem(gtk.STOCK_OPEN, agr)
        key, mod = gtk.accelerator_parse("<Control>O")
        openm.add_accelerator("activate", agr, key, mod, gtk.ACCEL_VISIBLE)
        filemenu.append(openm)

        sep = gtk.SeparatorMenuItem()
        filemenu.append(sep)

        exit = gtk.ImageMenuItem(gtk.STOCK_QUIT, agr)
        key, mod = gtk.accelerator_parse("<Control>Q")
        exit.add_accelerator("activate", agr, key, mod, gtk.ACCEL_VISIBLE)
        exit.connect("activate", gtk.main_quit)
        filemenu.append(exit)
        mb.append(filem)

        # --- Scrolled window ---
        scrolled_window = gtk.ScrolledWindow()
        scrolled_window.set_policy(gtk.POLICY_ALWAYS, gtk.POLICY_ALWAYS)

        # --- Drawing area ---
        darea = gtk.DrawingArea()
        darea.connect("expose-event", self.expose)
        scrolled_window.add_with_viewport(darea)

        # --- Status bar
        status_bar = gtk.Statusbar()
        status_bar.push(0, "example")

        vbox = gtk.VBox(False, 0)
        vbox.pack_start(mb, False, False, 0)
        vbox.pack_start(scrolled_window, True, True, 0)
        vbox.pack_start(status_bar, False, False, 0)

        self.add(vbox)
        self.connect("destroy", gtk.main_quit)
        self.show_all()

    def expose(self, widget, event):
        cr = widget.window.cairo_create()
        cr.set_source_rgb(0.6, 0.6, 0.6)
        cr.rectangle(20, 20, 120, 80)
        cr.rectangle(180, 20, 80, 80)
        cr.fill()
        cr.arc(330, 60, 40, 0, 2*math.pi)
        cr.fill()
        cr.arc(90, 160, 40, math.pi/4, math.pi)
        cr.fill()
        cr.translate(220, 180)
        cr.scale(1, 0.7)
        cr.arc(0, 0, 50, 0, 2*math.pi)
        cr.fill()

def main():
    gtk.main()
    return 0

if __name__ == "__main__":
    PyApp()
    main()

★★★★★

Ответ на: комментарий от neversleep

Я тоже поэкспериментировал с темами, в некоторых зазор поменьше, но всё равно виден. Хочу ещё попробовать просто со скролбаром, без использования ScrolledWindow, может там зазоров не будет, а то уж как-то не айс выглядит (

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