2011-06-05 22 views
9

या "GtkTextView में एक दृश्यमान (पतली) सीमा कैसे जोड़ें"? क्या यह कभी संभव है?GtkTextView GtkEntry की तरह दिखने के लिए कैसे करें?

अग्रिम धन्यवाद।

+0

क्यों आप ऐसा अपने उपयोगकर्ताओं को भ्रमित करने के लिए चाहेगा? – ptomato

+1

@ptomato मुझे एक ही चीज़ चाहिए। यह उपयोगकर्ता को भ्रमित नहीं करना है, लेकिन उपयोगकर्ता को भ्रमित नहीं करना है। मैं एक 3-पंक्ति पाठ विजेट चाहता हूं जो बिल्कुल एक प्रविष्टि विजेट की तरह व्यवहार करता है (लेकिन 3 लाइनों के साथ)। एकमात्र तरीका मुझे मिल सकता है एक टेक्स्ट व्यू विजेट को संशोधित करना ... – xubuntix

उत्तर

0

का उपयोग Glade संपादक:

  • Glade संपादक में अपने ScrolledWindow (आप ScrolledWindow में TextView पैक है का चयन करें, आपके पास नहीं है :), अगर नहीं - अपने TextView चयन?)।
  • करें विजेट Porperties ->आम टैब।
  • सीमा चौड़ाई अपनी पसंद के अनुसार संपत्ति को ढूंढें और समायोजित करें।

कोड से:

कॉल कंटेनर विजेट के set_border_width(width) विधि (या तो ScrolledWindow या TextView)

ध्यान दें, कि किसी भी मामले में TextArea बिल्कुल एंट्री की तरह नहीं होगा और यह gtk + विषय का उपयोग किया जा रहा है पर निर्भर करता है।

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

चेतावनी है कि स्क्रॉलबार (रों) अदृश्य हो जाता है; इसे चुना जा सकता है, और सामान्य रूप से स्क्रॉलिंग काम करता है। यदि क्षेत्र में दर्ज किया जाने वाला डेटा स्क्रॉलिंग का उपयोग नहीं करता है तो यह मामूली समस्या हो सकती है।

6

सालों बाद ... लेकिन वेब पर खोज करने से अभी भी इस प्रश्न का कोई अच्छा जवाब नहीं मिलता है।

समाधान काफी सरल है: बस एक GtkFrame बना सकते हैं और GtkTextView युक्त GtkScrolledWindow जोड़ने के लिए, यहां अजगर में मौजूद कुछ उदाहरण कोड है:

frame = Gtk.Frame() 
scroll = Gtk.ScrolledWindow() 
scroll.set_hexpand(True) 
scroll.set_border_width(3) 
textview = Gtk.TextView() 
scroll.add(textview) 
frame.add(scroll) 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^