python gtk.window.resize не работает при попытке увеличить / уменьшить окно - PullRequest
0 голосов
/ 10 июля 2011

У меня есть окно, которое я запускаю с определенным размером, и которое я хочу сделать меньшим или большим, когда пользователь выполняет взаимодействие. Я превратил его в верхнюю док-станцию, чтобы ничто не могло превзойти его.

Iне может изменить его размер на меньший или больший, ничего не происходит.

Вот код для создания окна:

window = gtk.Window(gtk.WINDOW_TOPLEVEL)

box = gtk.VBox(homogeneous=False, spacing=0)
window.add(box)
box.pack_start(browser, expand=True, fill=True, padding=0)
window.set_default_size(gtk.gdk.screen_width(),500)
window.move(0, 0)
window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)
window.show_all()
window.window.property_change("_NET_WM_STRUT", "CARDINAL", 32,
        gtk.gdk.PROP_MODE_REPLACE, [0, 0, 100, 0])

А вот код, который я запускаю, когда пользователь взаимодействует:

window.resize(gtk.gdk.screen_width(),100)

Не генерируются коды ошибок, но ничего не происходит ..

Кто-нибудь знает, что я делаю неправильно?

1 Ответ

2 голосов
/ 10 июля 2011

Ваш код будет работать, просто нужно изменить эту строку:

window.resize(gtk.gdk.screen_width(),100) # Instead of gtk.gdk.screen.width()

и было бы лучше использовать нижнюю строку кода, т.е.

window.window.property_change("_NET_WM_STRUT", "CARDINAL", 32,
    gtk.gdk.PROP_MODE_REPLACE, [0, 0, 100, 0])

после

команда window.show_all ()

в противном случае возникнет ошибка для объекта «NoneType».

Ваш код с некоторыми изменениями:

import gtk

class ResizeWindow:

 def __init__(self):
    self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
    button = gtk.Button("Resize")
    self.window.add(button)
    button.connect("clicked", self.resizewin)
    self.window.set_default_size(gtk.gdk.screen_width(),500)
    self.window.move(0, 0)
    self.window.show_all()
    self.window.window.property_change("_NET_WM_STRUT", "CARDINAL", 32,
           gtk.gdk.PROP_MODE_REPLACE, [0, 0, 100, 0])

 def resizewin(self, widget, *args):
    self.window.resize(gtk.gdk.screen_width(),100)

if __name__ == '__main__':
  ResizeWindow()
  gtk.main()

Надеюсь, это то же самое, что вы хотите сделать.

...