60 lines
1.5 KiB
Python
Executable File
60 lines
1.5 KiB
Python
Executable File
#!/usr/bin/python
|
|
|
|
# Python 2/3 compatibility.
|
|
from __future__ import print_function
|
|
|
|
import sys
|
|
import os
|
|
|
|
# Change path so we find Xlib
|
|
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
|
|
|
|
from Xlib import display, X, threaded
|
|
import time
|
|
import thread
|
|
|
|
def redraw(win, gc):
|
|
# win.clear_area()
|
|
win.fill_rectangle(gc, 20, 20, 60, 60)
|
|
|
|
def blink(display, win, gc, cols):
|
|
while 1:
|
|
time.sleep(2)
|
|
print('Changing color', cols[0])
|
|
gc.change(foreground = cols[0])
|
|
cols = (cols[1], cols[0])
|
|
redraw(win, gc)
|
|
display.flush()
|
|
|
|
def main():
|
|
d = display.Display()
|
|
root = d.screen().root
|
|
|
|
colormap = d.screen().default_colormap
|
|
|
|
red = colormap.alloc_named_color("red").pixel
|
|
blue = colormap.alloc_named_color("blue").pixel
|
|
background = colormap.alloc_named_color("white").pixel
|
|
|
|
window = root.create_window(100, 100, 100, 100, 1,
|
|
X.CopyFromParent, X.InputOutput,
|
|
X.CopyFromParent,
|
|
background_pixel = background,
|
|
event_mask = X.StructureNotifyMask | X.ExposureMask)
|
|
window.map()
|
|
|
|
gc = window.create_gc(foreground = red)
|
|
|
|
thread.start_new_thread(blink, (d, window, gc, (blue, red)))
|
|
|
|
while 1:
|
|
event = d.next_event()
|
|
if event.type == X.Expose:
|
|
if event.count == 0:
|
|
redraw(window, gc)
|
|
elif event.type == X.DestroyNotify:
|
|
sys.exit(0)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|