```python
import tkinter as tk
import ctypes
class TransparentSelectionWindow:
def __init__(self):
self.root = tk.Tk()
self.root.withdraw()
self.overlay = tk.Toplevel()
self.overlay.attributes("-topmost", True)
self.overlay.attributes("-fullscreen", True)
self.overlay.attributes("-alpha", 0.5)
self.overlay.config(bg='gray')
self.canvas = tk.Canvas(self.overlay, bg='gray', cursor='cross', bd=0, highlightthickness=0)
self.canvas.pack(fill='both', expand=True)
self.start_x = None
self.start_y = None
self.rect = None
self.region = None
self.overlay.bind('<ButtonPress-1>', self.on_button_press)
self.overlay.bind('<B1-Motion>', self.on_mouse_drag)
self.overlay.bind('<ButtonRelease-1>', self.on_button_release)
self.set_transparent()
def set_transparent(self):
hwnd = self.overlay.winfo_id()
ws_ex_layered = 0x00080000
ctypes.windll.user32.SetWindowLongW(hwnd, -20, ctypes.windll.user32.GetWindowLongW(hwnd, -20) | ws_ex_layered)
ctypes.windll.user32.SetLayeredWindowAttributes(hwnd, 0, 128, 0x00000002)
def on_button_press(self, event):
self.start_x = self.canvas.canvasx(event.x)
self.start_y = self.canvas.canvasy(event.y)
if self.rect:
self.canvas.delete(self.rect)
self.rect = self.canvas.create_rectangle(self.start_x, self.start_y, self.start_x, self.start_y, outline='red')
def on_mouse_drag(self, event):
cur_x = self.canvas.canvasx(event.x)
cur_y = self.canvas.canvasy(event.y)
self.canvas.coords(self.rect, self.start_x, self.start_y, cur_x, cur_y)
def on_button_release(self, event):
end_x = self.canvas.canvasx(event.x)
end_y = self.canvas.canvasy(event.y)
self.region = (int(min(self.start_x, end_x)), int(min(self.start_y, end_y)), int(max(self.start_x, end_x)), int(max(self.start_y, end_y)))
print(f"框选坐标:左上角 ({self.region[0]}, {self.region[1]}),右下角 ({self.region[2]}, {self.region[3]})")
self.overlay.destroy()
def run(self):
self.overlay.mainloop()
return self.region
if __name__ == "__main__":
print("请选择屏幕区域...")
screen_capture = TransparentSelectionWindow()
region = screen_capture.run()
if region:
print(f"选择的区域坐标:{region}")
else:
print("没有选择任何区域。")