15

または「GtkTextView に見える (薄い) 境界線を追加する方法」? それは可能ですか?

前もって感謝します。

4

4 に答える 4

2

それから約9年半…。

言語に依存しない回答をします。

最初に を追加するGtkScrolledWindowと、スクロールが有効になります。を追加しますGtkTextView。次に、影の種類を none 以外に設定します。の周りに境界線が表示されますGtkTextView

于 2020-11-23T12:12:12.083 に答える
0

Glade エディターの使用:

  • グレイド エディターで ScrolledWindow を選択します( TextViewScrolledWindowにパックしましたよね :)、そうでない場合はTextViewを選択します)。
  • [ウィジェット プロパティ] -> [共通] タブを選択します。
  • Border widthプロパティを見つけて好みに合わせて調整します。

コードから:

set_border_width(width)コンテナ ウィジェットのメソッドを呼び出す( ScrolledWindowまたはTextViewのいずれか)

いずれにせよ、 TextAreaはEntryのようには見えず、使用されている gtk+ テーマに依存することに注意してください。

于 2011-06-06T11:35:44.933 に答える
0

を使用gtk.ScrolledWindow.set_shadow_type(type=gtk.SHADOW_ETCHED_IN)すると見栄えは良くなりますが、 のスタイルには合いませんgtk.Entry

スクロールされたウィンドウまたはテキストビューの境界は、ウィンドウまたはペインに配置されている場合は問題になりませんが、複数行の入力フィールドを持つフォームを作成することが目的の場合、見苦しくなります。これがトリックを行う可能性のあるハックです...

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()

注意点は、スクロールバーが見えなくなることです。選択でき、スクロールは通常どおり機能します。フィールドに入力されるデータがスクロールを使用しない傾向がある場合、これは小さな問題になる可能性があります。

于 2013-07-31T18:00:00.840 に答える