Форум сайта python.su
Есть желание использовать в приложении RichTextCtrl, естественно, для того, чтобы каждый раз не лепить к нему тулбар, решил вынести все это на панель, которую потом будет легко добавлять на любую форму. Но столкнулся с проблемой - при размещении wx.richtext.RichTextCtrl на панели, у него перестает работать перевод строки, т.е. на Enter он не реагирует…
Вот код:
import wx
import wx.richtext as richtext
class RichTextEditor (wx.Panel):
def __init__ (self, *args, **kwargs):
wx.Panel.__init__(self, *args, **kwargs)
self.rt = richtext.RichTextCtrl(self, wx.ID_ANY, style = richtext.RE_MULTILINE)
self.__do_layout()
def __do_layout (self):
sizer_main = wx.BoxSizer(wx.HORIZONTAL)
self.SetSizer(sizer_main)
sizer_main.Add(self.rt, 1, wx.EXPAND,0)
class TestFrame (wx.Frame):
def __init__ (self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Application", size=(400, 300))
self.rte = RichTextEditor(self, wx.ID_ANY)
self.Show()
if __name__ == "__main__":
app = wx.App()
frame = TestFrame()
app.SetTopWindow(frame)
app.MainLoop()
Офлайн
Проблема решена. Все дело в стиле wx.Panel - TAB_TRAVERSAL.
Офлайн
И снова проблема :(
Есть все тот же wx.richtext.RichTextCtrl. Нужно отловить момент выделения в нем текста. У этого контрола, вроде бы, есть событие EVT_RICHTEXT_SELECTION_CHANGED, но, судя по всему, оно не работает… ну или я чего-то не понимаю… Кто может подсказать решение?
Отредактировано (Фев. 4, 2010 12:40:09)
Офлайн
Чтобы правильно работала навигация в RichText (таб, интер, стрелки)нужно установить для его стиль wx.WANTS_CHARS
Офлайн
Вы должны установить для стиля RichText wx.WANTS_CHARS, чтобы навигация в RichText работала правильно, например, в браузерах.
bitlife
Офлайн
Чтобы разрешить перевод строки при нажатии клавиши Enter, вам нужно включить соответствующую обработку клавиш в вашем RichTextCtrl. Это можно сделать, добавив обработчик событий wx.EVT_KEY_DOWN, который будет перехватывать нажатия клавиш и обрабатывать их по вашему усмотрению.
retro bowl
Отредактировано timothyferriss (Апрель 4, 2024 05:01:07)
Офлайн