__init__外的python gtk window.show()

时间:2014-09-21 08:40:10

标签: python gtk

我试图编写一个Gtk脚本来通知用户(在root中),因为我在root中遇到python-notify问题。 所以,我写了这段代码:

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

import pygtk
pygtk.require('2.0')
import gtk
import gtk.gdk
import time

class Time:

    def auto(self, Time, donnees=None):

        print "Show the window"
        self.window.show()
        time.sleep(10)
        print "Hide the window"
        self.window.hide()

    def __init__(self):

        color = "#000"
        positionX = 1560
        positionY = 35

        # Création fenetre principale
        self.window = gtk.Window(gtk.WINDOW_POPUP)

        # Position de la fenetre principale
        self.window.move(positionX+100, positionY)
        self.window.set_default_size(250, 80)
        self.window.set_position(gtk.WIN_POS_NONE)
        self.window.set_position(gtk.WIN_POS_CENTER_ON_PARENT)

        # Couleur de la fenetre
        map = self.window.get_colormap()
        colour = map.alloc_color(color) 
        style = self.window.get_style().copy()
        style.bg[gtk.STATE_NORMAL] = colour
        self.window.set_style(style)   

        #self.window.show()

        self.auto(self, Time)

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

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

问题是我无法在需要时显示或隐藏窗口。当我在 init 中调用self.auto(self,Time)时,窗口不会出现。 我必须使用其他线程吗?

由于

1 个答案:

答案 0 :(得分:0)

您需要将time.sleep(10)替换为:

then = time.time()
while then + 10 > time.time():
    while gtk.events_pending():
        gtk.main_iteration()
    time.sleep(0.1)

让你在睡觉时运行主循环。