或“如何向GtkTextView添加可见(细)边框”?它有可能吗?
提前谢谢。
答案 0 :(得分:6)
多年以后......但是在网上搜索仍然没有给出这个问题的好答案。
解决方案非常简单:只需创建一个GtkFrame
并添加包含GtkScrolledWindow
的{{1}},这是python中的一些示例代码:
GtkTextView
答案 1 :(得分:0)
使用Glade编辑器:
来自代码:
调用容器小部件的set_border_width(width)
方法( ScrolledWindow 或 TextView )
请注意,在任何情况下, TextArea 都不会完全像 Entry ,它取决于所使用的gtk +主题。
答案 2 :(得分:0)
使用gtk.ScrolledWindow.set_shadow_type(type=gtk.SHADOW_ETCHED_IN)
会改善外观,但与gtk.Entry
的风格不符。
如果放置在窗口或窗格中,则scolled window或textview的边框不是问题,但如果目标是创建具有多行输入字段的表单,则它变得难看。这是一个可以解决问题的黑客......
import gtk
# create an entry widget that we use for appearances only
e=gtk.Entry()
e.set_size_request(width=250, height=150)
# create a texview and accompaying label
lbl = gtk.Label(str="Comments: ")
lbl.set_alignment(xalign=1, yalign=0)
field = gtk.TextView(buffer=None)
field.set_wrap_mode(wrap_mode=gtk.WRAP_WORD) # or gtk.WRAP_CHAR
# we need a scroll window
sw = gtk.ScrolledWindow(hadjustment=None, vadjustment=None)
sw.set_border_width(border_width=4)
sw.set_size_request(width=250, height=150)
sw.set_policy(hscrollbar_policy=gtk.POLICY_NEVER, vscrollbar_policy=gtk.POLICY_AUTOMATIC)
sw.add(field)
# create more widgets as needed for form here...
lbl2 = gtk.Label(str="email: ")
lbl2.set_alignment(xalign=1, yalign=0)
field2 = gtk.Entry()
# put everything in a table so the fields and labels are all aligned
tbl = gtk.Table(rows=1, columns=2, homogeneous=False)
tbl.attach(lbl, left_attach=0, right_attach=1, top_attach=0, bottom_attach=1, xoptions=gtk.FILL|gtk.SHRINK, yoptions=gtk.FILL, xpadding=0, ypadding=0)
# sw and e must be attached in this order, the reverse will not work
tbl.attach(sw, left_attach=1, right_attach=2, top_attach=0, bottom_attach=1, xoptions=gtk.FILL|gtk.SHRINK, yoptions=gtk.FILL, xpadding=0, ypadding=0)
tbl.attach(e, left_attach=1, right_attach=2, top_attach=0, bottom_attach=1, xoptions=gtk.FILL|gtk.SHRINK, yoptions=gtk.FILL, xpadding=0, ypadding=0)
# comment out previous line to see difference
# attach other widgets here...
tbl.attach(lbl2, left_attach=0, right_attach=1, top_attach=1, bottom_attach=2, xoptions=gtk.FILL|gtk.SHRINK, yoptions=gtk.FILL, xpadding=0, ypadding=0)
tbl.attach(field2, left_attach=1, right_attach=2, top_attach=1, bottom_attach=2, xoptions=gtk.FILL|gtk.SHRINK, yoptions=gtk.FILL, xpadding=0, ypadding=0)
# display it!
window = gtk.Window()
window.set_default_size(350, 200)
window.connect("destroy", lambda w: gtk.main_quit())
window.add(tbl)
window.show_all()
gtk.main()
需要注意的是,滚动条变得不可见;它可以被选中,滚动像往常一样工作。如果要在该字段中输入的数据倾向于不使用滚动,则这可能是次要问题。
答案 3 :(得分:0)
大约9年半后...
我将给出一个非语言特定的答案。
首先,添加一个GtkScrolledWindow。它将启用滚动。现在添加您的GtkTextView。然后将阴影类型设置为非空。它会在您的GtkTextView周围显示一个边框。