- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
当使用带有水平策略 Never 的 Gtk ScrolledWindow 时,如果 child 的水平尺寸请求发生变化,我希望滚动窗口能够适应。
但情况并非如此,例如在使用扩展器时:当我扩展扩展器时,子窗口比滚动窗口更宽,滚动窗口不适应它的大小。
最小示例:
using System;
using Gtk;
namespace ExpanderIssue
{
class MainClass
{
static bool useExpander = true;
private static Widget createScrolledWindow(Widget child)
{
ScrolledWindow scrolledWindow = new ScrolledWindow();
scrolledWindow.SetPolicy(PolicyType.Never, PolicyType.Automatic);
scrolledWindow.AddWithViewport(child);
return scrolledWindow;
}
private static Widget createSingleExpaner(int index)
{
Button button = new Button(String.Format("ExampleButton {0}", index));
button.WidthRequest = 800;
if(useExpander) {
Expander expander = new Expander(String.Format("Expander {0}", index));
expander.Add(button);
return expander;
} else {
return button;
}
}
public static void Main(string[] args)
{
Application.Init();
createMainWindow();
Application.Run();
}
private static Window createMainWindow()
{
VBox vbox = new VBox();
vbox.Spacing = 4;
for(int i=0; i<32; ++i)
vbox.PackStart(createSingleExpaner(i), false, false, 0);
Window mainWindow = new Window("Expander Width Request issue");
mainWindow.SetDefaultSize(240, 160);
mainWindow.Add(createScrolledWindow(vbox));
mainWindow.ShowAll();
mainWindow.Destroyed += (sender, e) => Application.Quit();
return mainWindow;
}
}
}
最佳答案
尝试为您的滚动条手动创建视口(viewport),并在发送来自 child 的 SizeRequested 事件时调整来自视口(viewport)的宽度请求。
对于您的最小示例,它应该如下所示:
using System;
using Gtk;
namespace ExpanderIssue
{
class MainClass
{
static bool useExpander = true;
private static Widget createScrolledWindow(Widget child)
{
ScrolledWindow scrolledWindow = new ScrolledWindow();
scrolledWindow.SetPolicy(PolicyType.Never, PolicyType.Automatic);
scrolledWindow.Add(doWorkaround(child));
return scrolledWindow;
}
private static Viewport doWorkaround(Widget child)
{
Viewport viewport = new Viewport();
viewport.Add(child);
child.SizeRequested += (o, args) =>
{
viewport.WidthRequest = viewport.Child.Requisition.Width;
};
return viewport;
}
private static Widget createSingleExpaner(int index)
{
Button button = new Button(String.Format("ExampleButton {0}", index));
button.WidthRequest = 800;
if(useExpander) {
Expander expander = new Expander(String.Format("Expander {0}", index));
expander.Add(button);
return expander;
} else {
return button;
}
}
public static void Main(string[] args)
{
Application.Init();
createMainWindow();
Application.Run();
}
private static Window createMainWindow()
{
VBox vbox = new VBox();
vbox.Spacing = 4;
for(int i=0; i<32; ++i)
vbox.PackStart(createSingleExpaner(i), false, false, 0);
Window mainWindow = new Window("Expander Width Request issue");
mainWindow.SetDefaultSize(240, 160);
mainWindow.Add(createScrolledWindow(vbox));
mainWindow.ShowAll();
mainWindow.Destroyed += (sender, e) => Application.Quit();
return mainWindow;
}
}
}
关于c# - 滚动窗口中的 Gtk Expander : The width of the scrolledwindow doesn't update,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16250007/
我正在尝试构建一个可以使用鼠标绘制的 ScrolledWindow,它也能正常工作,但是当用户在窗口上绘制而滚动条不在“家”位置.. 要重现,请运行附加程序,向下滚动(或向右滚动)并按住鼠标左键“涂鸦
使用 Python 和 Gtk3,我创建了一个 Gtk.TreeView 并将其放在 Gtk.ScrolledWindow 中。我不喜欢水平滚动条,所以我使用 Gtk.PolicyType.NEVER
我有 ScrolledWindow(里面是一个 TreeView),我需要滚动到顶部。你有什么想法吗?每一个答案将不胜感激。谢谢 最佳答案 在 GTk+ 中,您基本上可以获得滚动窗口的垂直调整,并使用
我有 ScrolledWindow(里面是一个 TreeView),我需要滚动到顶部。你有什么想法吗?每一个答案将不胜感激。谢谢 最佳答案 在 GTk+ 中,您基本上可以获得滚动窗口的垂直调整,并使用
我正在使用 wxPython 开发一个小应用程序。 我有一个使用wx.ScrolledWindow的滚动窗口。它似乎拒绝在滚动时重新绘制内容。 示例: 创建上述示例的代码: import wx cla
使用 Python,如何以编程方式滚动(不使用滚动条)Tix ScrolledWindow 中的窗口?正常的方法是调用 xview/yview,但这些调用似乎不可用。谷歌搜索表明这根本不可能,但我希望
我正在使用 python 2.5 + pygtk。我在滚动窗口中添加了一个文本区域。文本区域缓冲区将随程序输出而更新。 我想在底部设置 scrolledwindow->vscrollbar。 我尝试了
我在 ScrolledWindow 中有一个 treeview-widget,它是在运行时填充的。我希望 ScrolledWindow 自动滚动到列表的末尾。我“解决”了这个问题,通过调整 Scrol
我正在用 python 中的 tkinter 创建一个 gui。我创建了一个滚动条,这就是代码部分的样子: beta_frame = Frame(width="500", height="680")
我对 wxWidgets 和 C++ 很陌生,但我熟悉其他工具包。我想要这样的布局: 这就是它的样子。看起来好像我的窗口根本没有宽度: 这是我的代码,带有大量注释。 这是我的代码,我相信它已尽可能接近
我有一个 gtkscrolledwindow,里面有一个 gtk 图像。如何在 GtkScrolledWindow 中获取当前显示区域?例如,我的图像是 1366x768 像素,而 300x400 像
我想在我的 GtkWindow 中有一个可滚动的 GtkTextView,但我只希望 GtkTextView 部分滚动而不是整个窗口。我试图将 GTKTextView 放入 GtkScrolledWi
我有一个 wx.ScrolledWindow ,其中有一些子窗口。 我想要一个滚动到子窗口的函数。 例如:scrollToChild(childWindow)。此函数将滚动到子窗口。 这个函数看起来很
我正在为 Rhythmbox 开发一个 python 插件——它包含一个 GtkScrolledWindow 和一个子 GtkIconView。 IconView 由 Gtk.TreeModel 提供
在一个使用 Python 的 GTK3 程序上,我实现了一个日志。这是在 ScrolledWindow 中带有 TextBuffer 的 TextView。通过例程,我将新行附加到此日志。之后它应该滚
我有一个在 wx.ScrolledWindow 中显示的 Matplotlib Canvas (FigureCanvasWxAgg)。问题是我想让 Matplotlib 的默认缩放和平移功能与 Scr
我正在编写一个具有 glade gui 的 python 应用程序。使用子进程在后台执行一些shell命令。 使用一个 glade GUI,它有一个 scrolledwindow 小部件和一个在 sc
我有这段代码,可以在滚动窗口中创建一个 TextView 。我想要一行“Hello World”作为第一行出现在 TextView 中。此外,我如何才能将这一行固定在其顶部,即即使窗口向下滚动,它也应
当使用带有水平策略 Never 的 Gtk ScrolledWindow 时,如果 child 的水平尺寸请求发生变化,我希望滚动窗口能够适应。 但情况并非如此,例如在使用扩展器时:当我扩展扩展器时,
我在 Gtk.Treeview 和 Gtk.ScrolledWindow 中遇到问题。我有大量数据,这些数据不适合我的正常窗口几何图形,所以我将我的 Treeview 放在 ScrolledWindo
我是一名优秀的程序员,十分优秀!