wxPython - TextCtrlでポインターの位置を行、列の形式で取得する方法

2021年8月18日水曜日

Python wxPython

t f B! P L

今回の内容

TextCtrlのマウス位置の取得にはGetInsertionPoint()がありますが、それは何文字目という感じですね。
自分が取得したいのは、[行,列]という形式です。これにはとても便利な関数がありました。

wx.TextCtrl.PositionToXY

これが超便利な関数です。
GetInsertionPoint()で取得できる位置を行、列の形式に変換してくれるのです。
戻り値は[bool,int,int]みたいな感じです。一個目のboolは何なのか分かりません。

サンプルコード

import sys
import wx
class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self,None,-1,"サンプル")
        panel = wx.Panel(self,-1)
        self.textctrl = wx.TextCtrl(panel,-1,"テスト\nテキスト",size=(300,80),style=wx.TE_MULTILINE)
        button = wx.Button(panel,-1,"取得する",pos=(10,110))
        button.Bind(wx.EVT_BUTTON,self.onButton)
    def onButton(self,event=None):
        #ここ重要!
        point = self.textctrl.GetInsertionPoint()
        pos = self.textctrl.PositionToXY(point)
        wx.MessageBox("列:" + str(pos[1]) + "行:" + str(pos[2]+1),"タイトル")
app = wx.App(0)
MyFrame().Show(True)
app.MainLoop()
wxPython - TextCtrlでポインターの位置を行、列の形式で取得する方法
デフォルトだと一番最初の行が0になってしまいますので、そこを+1にしていいます。

テキストエディタ作りたいならStyledTextCtrl!

テキストエディタ(メモ帳)作りたいならStyledTextCtrkを使いましょう。
これなら色分けもできますし、行番号表示もできますし、エディタとしての機能は完璧なほど持っています。

まだこのブログでは紹介していませんが、いつかは紹介する予定です!


動作環境:
Python 3.9.1
wxPython 4.1.1a1
Windows 10

おすすめ記事

wxPythonでメッセージボックスを表示させる
wxPythonでメッセージボックスを表示させる

wxPythonのTextCtrlで一部の文字の色を変更 / 文字を強調
wxPythonのTextCtrlで一部の文字の色を変更 / 文字を強調
wxPython テキストボックスを使ったサンプル / wx.TextCtrl Example
wxPython テキストボックスを使ったサンプル / wx.TextCtrl Example

このブログを検索

要望について

ブログのレイアウトやテーマについての提案をいただきました。現在qooqテーマを適応中です。 語尾を自動でつけるプログラムを作りたいという要望をいただきました。是非紹介したいですがどの言語でどのようなプログラムかなど、お問い合わせフォームで詳しく教えてください!

最近の出来事

最近の出来事
寿司打お勧め75位♪(練習モードだけど)

アンケート

Welcome!

「プログラミング独学ブログ」へようこそ。 Yakinyといいます。幅広い範囲で投稿していますので、ぜひ過去の記事も見てみてください!!コメントも大歓迎です!更新がとまってしまって申し訳ございません

お問い合わせ

名前

メール *

メッセージ *

QooQ