質問編集履歴

1

コメント受けて、コードを修正してアップしました

2017/03/09 16:23

投稿

tei
tei

スコア12

test CHANGED
File without changes
test CHANGED
@@ -11,3 +11,131 @@
11
11
  grid.Scrollを利用するとスクロールのpositionを移動でき、
12
12
 
13
13
  実現できそうだったのですが、TextCtrlに適用することができませんでした。
14
+
15
+
16
+
17
+ ※追記
18
+
19
+ コメントを受けてShowPositionを利用して作ってみましたが、
20
+
21
+ スクロールが同期できませんでした。
22
+
23
+ スクロールイベントにGetPositionをつけて座標を確認しましたが
24
+
25
+ スクロールしても(0,0)のままでした。
26
+
27
+ こちらが原因で同期できないのでしょうか。
28
+
29
+
30
+
31
+ ```python
32
+
33
+ import wx
34
+
35
+
36
+
37
+ class MyForm(wx.Frame):
38
+
39
+ # ----------------------------------------------------------------------
40
+
41
+ def __init__(self):
42
+
43
+ wx.Frame.__init__(self, None, wx.ID_ANY,"RT_diff")
44
+
45
+
46
+
47
+ splitter = wx.SplitterWindow(self, wx.ID_ANY, style=wx.SP_LIVE_UPDATE)
48
+
49
+ splitter.SetMinimumPaneSize(100)
50
+
51
+ self.panel1 = wx.Panel(splitter, wx.ID_ANY, style=wx.BORDER_SUNKEN)
52
+
53
+ self.panel2 = wx.Panel(splitter, wx.ID_ANY, style=wx.BORDER_SUNKEN)
54
+
55
+ self.text_1 = wx.TextCtrl(self.panel1, wx.ID_ANY, style=wx.TE_MULTILINE|wx.VSCROLL)
56
+
57
+ self.text_2 = wx.TextCtrl(self.panel2, wx.ID_ANY, style=wx.TE_MULTILINE|wx.VSCROLL)
58
+
59
+ self.text_1.Bind(wx.EVT_SCROLLWIN, self.onScrollWin1)
60
+
61
+ self.text_2.Bind(wx.EVT_SCROLLWIN, self.onScrollWin2)
62
+
63
+
64
+
65
+ f = open("ip-test01.txt","r")
66
+
67
+ line = f.readlines()
68
+
69
+ a = ""
70
+
71
+ for line_list in line :
72
+
73
+ a = a + line_list
74
+
75
+ self.text_1.SetValue(a)
76
+
77
+ self.text_2.SetValue(a)
78
+
79
+
80
+
81
+ lbox_layout = wx.BoxSizer(wx.VERTICAL)
82
+
83
+ lbox1 = wx.BoxSizer(wx.HORIZONTAL)
84
+
85
+ lbox1.Add(self.text_1, -1,wx.EXPAND)
86
+
87
+ lbox_layout.Add(lbox1,-1,wx.EXPAND)
88
+
89
+
90
+
91
+ rbox_layout = wx.BoxSizer(wx.VERTICAL)
92
+
93
+ rbox1 = wx.BoxSizer(wx.HORIZONTAL)
94
+
95
+ rbox1.Add(self.text_2, -1,wx.EXPAND)
96
+
97
+ rbox_layout.Add(rbox1,-1,wx.EXPAND)
98
+
99
+
100
+
101
+
102
+
103
+ self.panel1.SetSizer(lbox_layout)
104
+
105
+ self.panel2.SetSizer(rbox_layout)
106
+
107
+
108
+
109
+ splitter.SplitVertically(self.panel1,self.panel2)
110
+
111
+
112
+
113
+ def onScrollWin1(self, event):
114
+
115
+ self.text_2.ShowPosition(event.Position)
116
+
117
+ print(self.text_1.GetPosition())
118
+
119
+ def onScrollWin2(self, event):
120
+
121
+ self.text_1.ShowPosition(event.Position)
122
+
123
+ print(self.text_2.GetPosition())
124
+
125
+ event.Skip()
126
+
127
+ # ----------------------------------------------------------------------
128
+
129
+ # Run the program
130
+
131
+ if __name__ == "__main__":
132
+
133
+ app = wx.App(False)
134
+
135
+ frame = MyForm()
136
+
137
+ frame.Show()
138
+
139
+ app.MainLoop()
140
+
141
+ ```