【问题标题】:Pygtk: Change a widget's border colorPygtk:更改小部件的边框颜色
【发布时间】:2011-04-28 00:00:06
【问题描述】:

我到处寻找,但似乎找不到改变边框颜色的方法。 例如我需要一个这样的按钮:

gb = gtk.Button("Hi")
gb.set_border_width(50)

现在我希望将边框涂成红色(这是一个不存在的调用):

gb.set_border_color('red')

我试过 gb.modify_bg(...) 但它只改变按钮的背景,而不是它周围的 BORDER。我能得到的最重要的事情是将此 GtkButton 添加到 GtkFrame,并使用框架的阴影颜色。但是阴影框的宽度是固定的 - 它是一条细线,远低于我想要的厚度。

对我来说很直观,如果您可以更改边框的宽度,您应该可以在其上设置更多样式。我愿意接受其他方法来实现相同的粗边框效果,例如将按钮放在一些大的彩色背景上?

感谢您的帮助。

【问题讨论】:

  • 我认为这是主题的工作,而不是代码。由于用户可能使用按钮的边框是渐变的主题(从一种颜色到另一种颜色),并且您将用一种颜色覆盖按钮(边框)的那部分,这可能会使它变得难看!如果可能的话,我认为这不是一个好主意。
  • 您能否提供一个更改边框颜色的示例主题?我找不到相关的 gtkrc 样式。谢谢。
  • @ilius:是的,这是主题的工作,但在某些情况下您可能需要明确定义它。

标签: colors gtk pygtk border shadow


【解决方案1】:

AFAIR,gtk.Button 边框处理依赖于引擎。如果您不想弄乱样式,可以创建 gtk.EventBox,设置其背景颜色,打包按钮,然后将按钮周围的空白区域设置为所需的值:

button = gtk.Button("Click me")
button.set_border_width(50)
eb = gtk.EventBox()
eb.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("pink"))
eb.add(button)

【讨论】:

  • 这确实解决了我原来的问题!我很好奇我会如何弄乱样式来实际为按钮边框着色。你有一个工作示例风格吗?谢谢!
  • @e_x_p: 不,我很久以前就停止覆盖主题样式了 :) 你可能想查看faq.pygtk.org 部分“4. 主题、字体和样式”,它有几个例子可以给你一些见解。
猜你喜欢
  • 2011-10-30
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-05
相关资源
最近更新 更多