मैं एक ऐसे एप्लिकेशन को कोड कर रहा हूं जिसे स्क्रीन के क्षेत्र का चयन करने की आवश्यकता है। मुझे कर्सर को एक क्रॉस में बदलने की जरूरत है और उसके बाद उपयोगकर्ता चयन पर एक आयत खींचें। पहली चीज़ जो मैंने खोजी है वह कर्सर में हेरफेर करने का तरीका है और मैं wxPython में आया था। WxPython के साथ मैं आसानी से पैनल के साथ फ़्रेम पर ऐसा कर सकता हूं, बात यह है कि मुझे विंडो को पारदर्शी होने की आवश्यकता होगी ताकि उपयोगकर्ता वांछित क्षेत्र का चयन करते समय अपनी स्क्रीन देख सकें, लेकिन यदि मैं फ़्रेम और पैनल बनाता हूं वस्तुओं पारदर्शी सब कुछ छोटी गाड़ी हो जाता है।स्क्रीन पर पाइथन ड्राइंग
तो, मैं किसी भी समाधान के लिए खुला हूं, या तो wxPython का उपयोग कर रहा हूं या इसका उपयोग नहीं कर रहा क्योंकि मुझे वास्तव में पता नहीं है कि मैं इसका सही उपयोग कर रहा हूं या नहीं।
मैं पाइथन के लिए नया हूं और मैं मूल अंग्रेजी स्पीकर नहीं हूं, इसलिए मुझे खेद है कि अगर आप कुछ समझ नहीं सकते हैं।
यह है कि मैं क्या
import wx
class SelectableFrame(wx.Frame):
c1 = None
c2 = None
def __init__(self, parent=None, id=-1, title=""):
wx.Frame.__init__(self, parent, id, title, size=wx.DisplaySize(), style=wx.TRANSPARENT_WINDOW)
self.panel = wx.Panel(self, size=self.GetSize(), style=wx.TRANSPARENT_WINDOW)
self.panel.Bind(wx.EVT_MOTION, self.OnMouseMove)
self.panel.Bind(wx.EVT_LEFT_DOWN, self.OnMouseDown)
self.panel.Bind(wx.EVT_LEFT_UP, self.OnMouseUp)
self.panel.Bind(wx.EVT_PAINT, self.OnPaint)
self.SetCursor(wx.StockCursor(wx.CURSOR_CROSS))
def OnMouseMove(self, event):
if event.Dragging() and event.LeftIsDown():
self.c2 = event.GetPosition()
self.Refresh()
def OnMouseDown(self, event):
self.c1 = event.GetPosition()
def OnMouseUp(self, event):
self.SetCursor(wx.StockCursor(wx.CURSOR_ARROW))
def OnPaint(self, event):
if self.c1 is None or self.c2 is None: return
dc = wx.PaintDC(self.panel)
dc.SetPen(wx.Pen('red', 1))
dc.SetBrush(wx.Brush(wx.Color(0, 0, 0), wx.TRANSPARENT))
dc.DrawRectangle(self.c1.x, self.c1.y, self.c2.x - self.c1.x, self.c2.y - self.c1.y)
def PrintPosition(self, pos):
return str(pos.x) + " " + str(pos.y)
class MyApp(wx.App):
def OnInit(self):
frame = SelectableFrame()
frame.Show(True)
self.SetTopWindow(frame)
return True
app = MyApp(0)
app.MainLoop()
धन्यवाद, यह छोटी समस्या को हल करता है, लेकिन अब मुझे एक और समस्या है! चयन आयताकार भी पारदर्शी हो जाता है, इसलिए मैं खिड़की को पूरी तरह से पारदर्शी नहीं प्राप्त कर सकता हूं और अभी भी चयन देख सकता हूं। लेकिन यह अभी के लिए ठीक है। – Franco