私はwxpythonで簡単なテキストエディタを作っています。私はPythonのようなコードを編集できるようにしたいと思います。そのため、IDLEやNotepad ++と同様の方法でテキストを強調表示したいと思います。どのように私はそれを強調するだろう知っているが、私はそれを実行するための最良の方法が欲しい。私はそれが可能かどうかわからないが、私が本当に好きなのは、キーが押されるたびに実行され、押されているかどうかをチェックするループではなく、処理を節約することである。textctrlが変更されたときにwxpythonが実行される
import wx
class MainWindow(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, title=title, size=(500,600))
style = wx.TE_MULTILINE|wx.BORDER_SUNKEN|wx.TE_RICH2
self.status_area = wx.TextCtrl(self, -1,
pos=(10, 270),style=style,
size=(380,150))
self.status_area.AppendText("Type in your wonderfull code here.")
fg = wx.Colour(200,80,100)
at = wx.TextAttr(fg)
self.status_area.SetStyle(3, 5, at)
self.CreateStatusBar() # A Statusbar in the bottom of the window
# Setting up the menu.
filemenu= wx.Menu()
filemenu.Append(wx.ID_ABOUT, "&About","Use to edit python code")
filemenu.AppendSeparator()
filemenu.Append(wx.ID_EXIT,"&Exit"," Terminate the program")
# Creating the menubar.
menuBar = wx.MenuBar()
menuBar.Append(filemenu,"&File") # Adding the "filemenu" to the MenuBar
self.SetMenuBar(menuBar) # Adding the MenuBar to the Frame content.
self.Show(True)
app = wx.App(False)
frame = MainWindow(None, "Python Coder")
app.MainLoop()
ループはwhileループで、そのループ作るための最良の方法だろう何が必要な場合、または
def Loop():
<code>
Loop()
追加バインドと私の新しいコード:
import wx
class MainWindow(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, title=title, size=(500,600))
style = wx.TE_MULTILINE|wx.BORDER_SUNKEN|wx.TE_RICH2
self.status_area = wx.TextCtrl(self, -1,
pos=(10, 270),style=style,
size=(380,150))
#settup the syntax highlighting to run on a key press
self.Bind(wx.EVT_CHAR, self.onKeyPress, self.status_area)
self.status_area.AppendText("Type in your wonderfull code here.")
fg = wx.Colour(200,80,100)
at = wx.TextAttr(fg)
self.status_area.SetStyle(3, 5, at)
self.CreateStatusBar() # A Statusbar in the bottom of the window
# Setting up the menu.
filemenu= wx.Menu()
filemenu.Append(wx.ID_ABOUT, "&About","Use to edit python code")
filemenu.AppendSeparator()
filemenu.Append(wx.ID_EXIT,"&Exit"," Terminate the program")
# Creating the menubar.
menuBar = wx.MenuBar()
menuBar.Append(filemenu,"&File") # Adding the "filemenu" to the MenuBar
self.SetMenuBar(menuBar) # Adding the MenuBar to the Frame content.
self.Show(True)
def onKeyPress (self, event):
print "KEY PRESSED"
kc = event.GetKeyCode()
if kc == WXK_SPACE or kc == WXK_RETURN:
Line = self.status_area.GetValue()
print Line
app = wx.App(False)
frame = MainWindow(None, "Python Coder")
app.MainLoop()
キーを押したときに実行したいのは何ですか?ハイライトは? – arunkumar
文字列内のキーワードを強調表示して、Pythonコードを強調表示します。したがって、「もし」が紫色のテキストであり、異なる機能も着色される。私は自分のコードに単語が入力された場合にテキストを強調表示させる方法を知っています。textctrlのテキストが変更された場合は、コードのブロックを実行します。だから私がウィンドウのテキストボックスに「リンゴが好き」と入力して「私はアップルパイが好き」と変更しました。「パイ」のキーを押すたびに4回コードブロックが実行されます。 – drfrev
これを減らすには、スペースバーまたはエンターキーが押されたときにのみ強調表示コードを実行するのが良いでしょう。これは、単語または行が完全であることを示します。 – arunkumar