标签: scrolledwindow

如何自动滚动gtk.scrolledwindow?

我在a里面有一个treeview-widget ScrolledWindow,它在运行时填充.我希望ScrolledWindow自动滚动到列表的末尾.我"解决"问题,通过调整vadjustmentScrolledWindow,每次一个行插入到树视图.例如:

if new_line_in_row:
   adj = self.scrolled_window.get_vadjustment()
   adj.set_value( adj.upper - adj.page_size )
Run Code Online (Sandbox Code Playgroud)

如果我在交互式ipython会话中运行代码并自己设置值,一切都按预期工作.

如果我使用默认的python解释器运行代码,则自动滚动不会一直有效.我调试了代码,问题似乎是,调整值有某种"滞后",只在一段时间后才会改变.

我的问题是:如何可靠地滚动到最大位置ScrolledWindow?是一个特殊的信号生成,我可以使用?还是有更好的方法来设置adjustment-value

python gtk pygtk scrolledwindow gtktreeview

18
推荐指数
3
解决办法
8571
查看次数

如何在gtk.ScrolledWindow中的GtkTreeView中显示列标题?

我有一个问题与Gtk.Treeviewindide a Gtk.ScrolledWindow.我有大量的数据,不适合我的普通窗口几何,所以我把我的Treeview放在一个ScrolledWindow,这似乎是正常的方式.这个解决方案的问题是,当我滚动时,我的列标题消失了.这种行为对我来说似乎有点好,因为它ScrolledWindow应该关心它里面的小部件.

那么,如何让我的树视图是滚动第一行中总是显示栏标题?

我修改了basictreeview.py示例来表示我的问题:

#!/usr/bin/env python

# example basictreeview.py

import pygtk
pygtk.require('2.0')
import gtk

class BasicTreeViewExample:

    # close the window and quit
    def delete_event(self, widget, event, data=None):
        gtk.main_quit()
        return False

    def __init__(self):
        # Create a new window
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_title("Basic TreeView Example")
        self.window.set_size_request(200, 200)
        self.window.connect("delete_event", self.delete_event)

        # create a TreeStore with one string column to use as the model
        self.liststore = gtk.ListStore(str)

        # we'll add some data …
Run Code Online (Sandbox Code Playgroud)

python gtk pygtk scrolledwindow gtktreeview

7
推荐指数
1
解决办法
2466
查看次数

如何构建简单的wxWidgets图像显示

我写了一个wxPython程序,我正在翻译成wxWidgets.该程序有一个滚动窗口,显示图像.在Rappin,wxPython In Action(清单12.1)之后,我在一个面板中使用了StaticBitmap.在浏览最新的wxWidgets文档时,我发现了一个可怕的警告:wxStaticBitmap应该只用于非常小的图像.它说,"......如果你想要便携地显示更大的图像,你应该使用自己的控制." 好的.给我看看.我没有"自己的控制权".

拉平错了,或文件是否过时了?

问题 - 一个新手,毫无疑问 - 是什么是在wxWidgets中做一个简单的图像视图窗口的正确方法?wxStaticBitmap的直接替代品会很好.我查看了wxWidgets"samples"目录中的"image"程序.这是一场战争与和平. 当然必须有罐头类或简单的食谱.

wxwidgets image bitmap scrolledwindow

6
推荐指数
1
解决办法
1万
查看次数

GTK滚动窗口 - 滚动到底部

我正在使用GTK +编写应用程序,我遇到了问题.我正在使用GTK滚动窗口,我必须将垂直滚动条滚动到底部,但我不知道,如何.我在寻找谷歌,但我一无所获.

c++ gtk scrolledwindow

5
推荐指数
1
解决办法
4056
查看次数

wxpython滚动面板不更新滚动条

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

所以问题是,如何实时更新ScrolledPanel?我有一个事件设置等待文本在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, …
Run Code Online (Sandbox Code Playgroud)

python wxpython scrolledwindow

4
推荐指数
1
解决办法
4924
查看次数

无闪烁可绘制的ScrolledWindow

我正在尝试构建一个可以使用鼠标绘制的ScrolledWindow,它也可以正常工作,但是当用户在窗口上绘图而滚动条不在"主页"位置时,我会得到一个令人讨厌的闪烁..

要重现,请运行附加程序,向下滚动(或向右)并按住鼠标左键"涂抹"一下.你应该偶尔看到一个闪烁的..

import wx

class MainFrame(wx.Frame):
    """ Just a frame with a DrawPane """

    def __init__(self, *args, **kw):
        wx.Frame.__init__(self, *args, **kw)
        s = wx.BoxSizer(wx.VERTICAL)
        s.Add(DrawPane(self), 1, wx.EXPAND)
        self.SetSizer(s)

########################################################################
class DrawPane(wx.PyScrolledWindow):
    """ A PyScrolledWindow with a 1000x1000 drawable area """

    VSIZE = (1000, 1000)

    def __init__(self, *args, **kw):
        wx.PyScrolledWindow.__init__(self, *args, **kw)
        self.SetScrollbars(10, 10, 100, 100)
        self.prepare_buffer()

        self.Bind(wx.EVT_PAINT, self.on_paint)
        self.Bind(wx.EVT_LEFT_DOWN, self.on_mouse_down)
        self.Bind(wx.EVT_MOTION, self.on_motion)

    def prepare_buffer(self):
        self.buffer = wx.EmptyBitmap(*DrawPane.VSIZE)
        dc = wx.BufferedDC(None, self.buffer)
        dc.Clear()
        dc.DrawLine(0, 0, 999, 999) # Draw something to …
Run Code Online (Sandbox Code Playgroud)

python wxpython flicker scrolledwindow

3
推荐指数
1
解决办法
2532
查看次数

在滚动窗口中放置绘图区域时,防止滚动条显示

我正在使用Python和pyGTK开发一个项目.我有一个窗口,其唯一目的是显示图像.除非图像太大而不适合屏幕,否则默认情况下窗口不应显示滚动条.
所以我做的是这样的:

window = gtk.Window()
window.resize(image.size[0], image.size[1])

scrolled = gtk.ScrolledWindow()
scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
scrolled.set_shadow_type(gtk.SHADOW_NONE)

area = gtk.DrawingArea()
area.set_size_request(image.size[0], image.size[1])

window.add(scrolled)
scrolled.add_with_viewport(area)
area.show()
scrolled.show()
window.show()
Run Code Online (Sandbox Code Playgroud)

但它不太有效.生成的窗口有点太小,因此滚动条显示出来.
为了工作,我必须将第二行改为:

window.resize(image.size[0] + 2, image.size[1] + 2)
Run Code Online (Sandbox Code Playgroud)

但这很丑陋,并不适用于所有系统.在我的Windows框中,我必须使用+ 3.

我该怎么做才能确保窗口足够大以容纳图像?

python pygtk scrolledwindow

1
推荐指数
1
解决办法
993
查看次数

标签 统计

scrolledwindow ×7

python ×5

gtk ×3

pygtk ×3

gtktreeview ×2

wxpython ×2

bitmap ×1

c++ ×1

flicker ×1

image ×1

wxwidgets ×1