Đối với nền, tôi đang chạy Debian Lenny, và đã thử điều này với cả GNOME và Fluxbox.Tại sao X choke sau khi tôi vẽ đến cửa sổ gốc
Dù sao, tôi đã nhìn vào như thế nào để vẽ trên máy tính để bàn, và tôi thấy và cố gắng mã này ở đây: http://blog.prashanthellina.com/2007/08/24/drawing-on-your-desktop/
Nó hoạt động tốt, ngoại trừ khi chấm dứt nó (bằng cách nhấn kiểm soát C), X mất khả năng tạo cửa sổ mới.
Tôi đã nghĩ rằng có lẽ vấn đề đã được pygame không phát hành một số tài nguyên, vì vậy tôi thêm vào trong một khối mã để bẫy các tín hiệu kill, đem lại cho tôi những điều sau đây:
"""
Run the following command in the shell before executing this script
export SDL_WINDOWID=`xwininfo -root|grep "id:"|sed 's/^.*id: //'|sed 's/ (.*$//'`
"""
import pygame
import sys
import random
import time
import signal
pygame.init()
window = pygame.display.set_mode((1280, 1024))
screen = pygame.display.get_surface()
def handle_sigint(signum, frame):
"""I want to ensure resources are released before bailing."""
print("SIGINT received.");
pygame.display.quit()
pygame.quit()
sys.exit(0)
# Set handler to catch C^C Interupts
signal.signal(signal.SIGINT, handle_sigint)
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit(0)
x = random.choice(range(640))
y = random.choice(range(480))
radius = random.choice(range(100))
col_r = random.choice(range(255))
col_g = random.choice(range(255))
col_b = random.choice(range(255))
time.sleep(.03)
rect = pygame.draw.circle(screen, (col_r, col_g, col_b), (x,y), radius)
pygame.display.update(rect)
Và vì vậy tôi cố gắng một lần nữa. Lệnh in trong trình xử lý ngắt cho tôi biết rằng trình xử lý chạy khi tôi thoát, nhưng tôi vẫn có cùng một vấn đề. Và thậm chí thú vị hơn, X không có vấn đề gì trong khi nó đang chạy. Chỉ sau khi chấm dứt nó.
Có ai có thể biết được điều gì đang xảy ra và tôi có thể làm gì để sửa mã để nó không phá hỏng phiên X của tôi? Cảm ơn trước.
Trong câu trả lời cho các câu hỏi: 1.) Tôi vẫn có thể nhập vào thiết bị đầu cuối, mặc dù những thứ kỳ lạ bắt đầu xảy ra. Ví dụ: khi tôi nhập nhận xét này trong Firefox, tôi không có con trỏ. 2.) Có, điều đó khắc phục được sự cố. 3.) Tôi không chắc chắn làm thế nào để nói. Tôi đã thử ps ax | grep gtk và ps axe | grep phiên, nhưng tôi không thấy một trong các quy trình đó. Và thực sự, chạy trong fluxbox, tôi không sử dụng nautilus, do đó, những thứ liên quan đến gconftool có vẻ không liên quan. Nhưng trong mọi trường hợp, cảm ơn lời khuyên. – BigBeagle
Vâng, bạn đã đề cập đến cả gnome & fluxbox. Tôi nên nói rằng tất cả những lời bình luận của tôi đều hướng về phía gnome. Xin lỗi vì điều đó. Nếu bạn đang chạy gnome, bạn * chắc chắn * sẽ thấy những tiến trình đang chạy. Ngoài ra, nautilus còn quản lý desktop (gnome) của bạn, ngoài chức năng như một trình duyệt tập tin. – DaveParillo