Python gtk TextView边框不能用于css

时间:2018-01-24 21:13:45

标签: python css gtk gtk3

我真的很奇怪。 从gtk css样式我可以申请例如背景颜色,订单半径,但我不能使边框可见。 该文件非常简单:

GtkTextView  {

    border-radius: 3px;
    border-width: 1px 1px 2px 1px;
    border-style: solid;
    border-color: #000;
    /*background-color: #0000ff;*/
    }

我做错了什么?

2 个答案:

答案 0 :(得分:0)

我的系统是薄荷和肉桂。我不记得主题名称,但我认为我已经尝试了两三个。最后,我添加了一个框架,而不是一个完美的解决方案,但它可以工作。

答案 1 :(得分:0)

我的头撞了一个小时太多了-更长的时间,可能损坏了Google。顺便说一句:CSS边框对此根本不起作用。

但这可以通过绘制信号来完成。 下面的代码是C#(我不喜欢python),但是它的简短描述将说明其要点。

// add callback to Drawn signal handler
MyTextView.Drawn += widgetDrawn;  // where you build your form / set up your widget

....

// this works on any widget, labels and containers included
private void widgetDrawn(object sender, DrawnArgs e)
{
    e.Cr.SetSourceRGB(1, 0, 0);  // red - so ya won't miss it.
    e.Cr.Rectangle(0, 0, ((Widget)sender).Allocation.Width, ((Widget)sender).Allocation.Height);
    // thicker line --> e.Cr.LineWidth = 1;  // ... default is 1
    e.Cr.Stroke();
}
  • 它适用于包括标签和容器在内的任何小部件
  • RGB是开罗风格(双精度0.000.00..1.0),即浅灰色:(0.828,0.828,0.828)
  • 在分配的窗口小部件区域内画线(即,使LineWidth越宽,窗口小部件内容留在内部的区域越少。
  • 所有剪裁工作(即重叠/超出窗口边界)

注意::如果相反,您正在使用protected override bool OnDrawn(Cairo.Context cr) { ... }
覆盖(继承的类或类似类) -在添加边框之前调用base.OnDrawn(cr)
-并确保返回布尔结果。