我想知道如何在wx.ScrolledWindow中放置连续值

时间:2017-08-08 03:34:41

标签: python wxpython

我想用for语句输出1~100输出到滚动wx.panel,但只输出最后100个值。我想知道该怎么做,我可以在常规面板中累积值吗?我想知道如何在不使用SetScrollbars方法的情况下自动滚动。

import wx

class test(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None)
        main = wx.ScrolledWindow(self)
        main.SetScrollbars(10,10,10,10)

        for i in range(1,101):
            print(i)
            wx.StaticText(main, label=str(i))

if __name__ == '__main__':
    app = wx.App()
    frame = test()
    frame.Show(True)
    app.MainLoop()

我还有其他问题。如何以100到1的顺序将顺序从1反转为100?

wx.TextCtrl也有反向功能吗?最后,我想知道是否需要进行转换工作以将输出Oracle RTF语句输出到wx.TextCtrl。

Oracle RTF:

{\ rtf1 \ ansi \ ansicpg949 \ deff0 \ deflang1033 \ deflangfe1042 {\ fonttbl {\ f0 \ fnil \ fcharset129 \ 'b1 \' bc \ 'b8 \' b2 \ 'c3 \' bc;}}
{\ Colortbl; \ red0 \ green0 \ blue0;}
\ Viewkind4 \ p1 \ pard \ cf1 \ lang1042 \ f0 \ fs20 vulva - marked improved
\ Par \ cf0 \ fs20
\ Par}

再次感谢你。

1 个答案:

答案 0 :(得分:1)

我不相信你想要import wx import time class test(wx.Frame): def __init__(self): wx.Frame.__init__(self, None) self.panel = wx.Panel(self, wx.ID_ANY) self.log = wx.TextCtrl(self.panel, wx.ID_ANY, size=(300,400), style = wx.TE_MULTILINE|wx.TE_READONLY|wx.VSCROLL) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.log, 1, wx.ALL|wx.EXPAND, 5) self.panel.SetSizer(sizer) self.Show() for i in range(1,101): self.log.AppendText(str(i)+"\n") self.log.ShowPosition(-1) self.panel.Update() time.sleep(0.1) wx.Yield() if __name__ == '__main__': app = wx.App() frame = test() app.MainLoop() 来实现你的目标 试试这个:

Stop

可以说,sizer不是必需的,但您可能希望在以后添加一些控制按钮,例如Yield,这样可以让sizer允许您这样做。
通过Stop调用,您可以查看循环过程中发生的情况,并可以在将来点击time.sleep按钮。
拨打ShowPosition只会降低速度,function clearAllButton(){ clearAll(); printId(); if(markEdit){ markEditRow.classList.toggle("blue"); markEditRow=undefined; markEdit=false; } var fields1 = document.getElementsByClassName("red"); Array.prototype.forEach.call(fields1,function(e){ console.log(fields1, fields1.length); e.classList.toggle("red"); var id = e.getElementsByTagName('td')[0].innerHTML; itemOperations.markRecord(id); }); printTotalRecords(); } 会将最后一项添加到焦点中。