Как синхронизировать прокрутку двух многострочных текстовых полей с wxPython?Python

Программы на Python
Ответить
Anonymous
 Как синхронизировать прокрутку двух многострочных текстовых полей с wxPython?

Сообщение Anonymous »

Сейчас я занимаюсь написанием приложения с помощью wxPython на Python 3.12. Приложение содержит два многострочных текстовых поля, расположенных рядом: поле слева принимает пользовательский ввод, а поле справа заполняется программой с помощью обратной связи по строкам о вводе пользователя.
Изображение

Когда пользователь вводит текст, длина которого превышает заданное количество строк, появляются полосы прокрутки. появляются в каждом поле, но когда пользователь прокручивает одно окно вниз, другое остается на месте, что приводит к смещению линии обратной связи и затрудняет определение того, где программа указывает на обнаружение проблемы.
Обширное интернет-исследование не дало результатов. чтобы дать какие-либо рабочие решения этой проблемы. Эта страница «Как синхронизировать полосы прокрутки двух сеток в wx» содержит аналогичную, но не идентичную проблему. Однако он использует Python 2, и, как следствие, код больше не компилируется во что-либо значимое. Кто-нибудь может помочь?
Спасибо!
### Pottersclay Writing Assistant 2.2a (MRE) ###
import wx
# Initialize the window
app = wx.App()
window = wx.Frame(None, title = "Pottersclay Writing Assistant 2.2a (MRE)", size = (1885, 1010))
window.Show()
bkg = wx.Panel(window, style = wx.WANTS_CHARS)
# Create the two main text boxes and set their styles
contents = wx.TextCtrl(bkg, pos = (0, 35), size = (500, 400), style = wx.TE_MULTILINE | wx.HSCROLL | wx.WANTS_CHARS)
outputbox = wx.TextCtrl(bkg, pos = (0, 35), size = (500, 400), style = wx.TE_MULTILINE | wx.HSCROLL | wx.WANTS_CHARS | wx.TE_READONLY)
contents.SetWindowStyle(contents.GetWindowStyle() & ~ wx.TAB_TRAVERSAL)
outputbox.SetWindowStyle(outputbox.GetWindowStyle() & ~ wx.TAB_TRAVERSAL)
EXAMPLE = "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n42\n43\n44\n45\n46\n47\n48\n49\n"
contents.SetValue(EXAMPLE)
outputbox.SetValue(EXAMPLE)
#Add the two text boxes and the button box to a new, horizontal box sizer representing all of the window below the command line
lowerhbox = wx.BoxSizer(wx.HORIZONTAL)
lowerhbox.Add(contents, proportion = 1, flag = wx.EXPAND | wx.BOTTOM | wx.LEFT, border = 5)
lowerhbox.Add(outputbox, proportion = 1, flag = wx.EXPAND | wx.BOTTOM | wx.RIGHT, border = 5)
bkg.SetSizer(lowerhbox)
app.MainLoop()


Подробнее здесь: https://stackoverflow.com/questions/791 ... h-wxpython
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»