wxpython textctrl添加滚动条,wxpython滚动面板不更新滚动条

我正在使用winxp和wxpython(wxpython 3.1,python 2.6)制作一个GUI程序,将文本从TextCtrl复制到包含StaticText的可滚动面板中。这一切都很好,但是,滚动部分工作不太好。它似乎不会实时更新。当我将窗口最大化并再次将其最大化时,滚动条将更新。但是,如果我再次开始输入TextCtrl(从而使用事件将文本添加到scrollabelpanel内的StaticText中),面板上的滚动条不会更新,除非我再次最小化等等。

所以问题是,如何实时更新滚动面板?我有一个事件设置,等待文本在TextCtrl中更改,这是我认为需要进行更新的地方。我试过更新、刷新和布局,但它们似乎没起多大作用。更大的问题是,最小化窗口并再次最大化它能做什么更新、刷新和布局不能做什么?谢谢你的帮助。对不起,我不能发密码,机密。如果你能帮助我,我将不胜感激。我通常可以通过搜索自己找出问题,但我只是没有找到任何关于这类事情的文档。对我来说这是第一次,但我从你的回答中得到了很多帮助。再次感谢!:)

添加:import wx

import wx.lib.inspection

from wx.lib.scrolledpanel import ScrolledPanel

class MyFrame( wx.Frame ):

# TODO: add all class variables here for convention

tin = None

hsizer = None

def __init__( self, parent, ID, title ):

wx.Frame.__init__( self, parent, ID, title,

wx.DefaultPosition, wx.Size( 200, 150 ) )

self.InitWidgets()

self.InitBindings()

self.InitFinish()

def InitWidgets( self ):

self.hsizer = wx.BoxSizer( wx.HORIZONTAL )

# Add the TextCtrl

vsizer = wx.BoxSizer( wx.VERTICAL )

self.tin = wx.TextCtrl( self, style=wx.TE_MULTILINE )

vsizer.Add( self.tin, 1, wx.EXPAND )

self.hsizer.Add( vsizer, 3, wx.TOP|wx.LEFT|wx.BOTTOM|wx.EXPAND, border=20 )

# Add ScrolledPanel widget

self.hsizer.Add( wx.Size( 200, -1 ), 1 )

vsizer2 = wx.BoxSizer( wx.VERTICAL )

self.test_panel = ScrolledPanel( self )

self.test_panel.SetupScrolling()

# Setup static text ( label ) tvs is the

# vertical sizer inside the panel

self.tvs = wx.BoxSizer( wx.VERTICAL )

self.tin2 = wx.StaticText( self.test_panel )

self.tvs.Add( self.tin2, 0, wx.EXPAND )

vsizer2.Add( self.test_panel, 1, wx.EXPAND )

self.hsizer.Add( vsizer2, 3, wx.TOP|wx.LEFT|wx.BOTTOM|wx.EXPAND, border=20 )

# Add Spacer

self.hsizer.Add( wx.Size( 500, -1 ), 1 )

def InitBindings( self ):

self.tin.Bind( wx.EVT_TEXT, self.TextChange )

def InitFinish( self ):

# Setup sizers and frame

self.SetAutoLayout( True )

self.test_panel.SetAutoLayout( True )

self.test_panel.SetSizer( self.tvs )

self.SetSizer( self.hsizer )

self.Layout()

self.Update()

self.Maximize()

def TextChange( self, event ):

#self.CopyValues()

self.tin2.Label = self.tin.GetValue()

self.Layout()

self.Update()

self.test_panel.Refresh()

self.test_panel.Update()

print self.tin.GetValue().split( "\n" )

class MyApp( wx.App ):

fr = None

def OnInit( self ):

self.fr = MyFrame( None, -1, "TitleX" )

self.fr.Show( True )

self.SetTopWindow( self.fr )

return True

app = MyApp( 0 )

app.MainLoop()

def main():

win = 1

if ( __name__ == "__main__" ):

main()

一般来说,这就是在没有给出太多程序目的的情况下发生的事情。我设置虚拟大小的想法,将使面板的大小大于它所填充的区域,希望它将有永久滚动条,但不是这样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值