鼠標座標

      在〈鼠標座標〉中尚無留言

原始程式碼及圖例

本篇說明如何顯示滑鼠在Panel上移動時的位置, 代碼及執行結果如下

import wx
class MainFrame(wx.Frame):
    def __init__(self, parent=None):
        wx.Frame.__init__(self, parent)
        self.Show()
        panel=wx.Panel(self)
        panel.SetBackgroundColour("yellow")
        wx.StaticText(panel,-1,"Mouse", pos=(50,23))
        self.txt=wx.TextCtrl(panel, -1,"", pos=(100,20))
        panel.Bind(wx.EVT_MOTION, self.OnMouseMove)

        sizer=wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(sizer)
        sizer.Add(panel, 1, wx.EXPAND)
        self.Layout()
    def OnMouseMove(self, event):
        pos=event.GetPosition()
        self.txt.SetLabelText("%s, %s" % (pos.x, pos.y))
app=wx.App()
frame=MainFrame()
app.MainLoop()

wxpython_mouse

整体視窗

整個視窗類別繼承wx.Frame.  在主程式中產生wx.App, MainFrame, 然後進入MainLoop.
視窗中, 使用Panel包含一個wx.staticText(標籤), 及wxTextCtrl(文字方塊). 滑鼠的座標位置可以顯示在wx.TextCtrl之中.

在此採用了正統的方式, 利用BoxSizer管理Panel的大小, 最後調用wx.Frame的Layout()重新佈署一次, 整個畫面才會更新正確

事件綁定

Panel需綁定wx.EVT_MOTION事件, 當偵測到滑鼠移動時, 就會執行OnMouseMove的方法

panel.Bind(wx.EVT_MOTION, self.OnMouseMove)

取得位置

在OnMouseMove方法中, 借由event.GetPosition方法取得 pos 物件, 再由pos.x, pos.y取得座標. 然後置於TextCtrl方塊內

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *