या "GtkTextView में एक दृश्यमान (पतली) सीमा कैसे जोड़ें"? क्या यह कभी संभव है?GtkTextView GtkEntry की तरह दिखने के लिए कैसे करें?
अग्रिम धन्यवाद।
या "GtkTextView में एक दृश्यमान (पतली) सीमा कैसे जोड़ें"? क्या यह कभी संभव है?GtkTextView GtkEntry की तरह दिखने के लिए कैसे करें?
अग्रिम धन्यवाद।
का उपयोग Glade संपादक:
कोड से:
कॉल कंटेनर विजेट के set_border_width(width)
विधि (या तो ScrolledWindow या TextView)
ध्यान दें, कि किसी भी मामले में TextArea बिल्कुल एंट्री की तरह नहीं होगा और यह gtk + विषय का उपयोग किया जा रहा है पर निर्भर करता है।
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()
चेतावनी है कि स्क्रॉलबार (रों) अदृश्य हो जाता है; इसे चुना जा सकता है, और सामान्य रूप से स्क्रॉलिंग काम करता है। यदि क्षेत्र में दर्ज किया जाने वाला डेटा स्क्रॉलिंग का उपयोग नहीं करता है तो यह मामूली समस्या हो सकती है।
सालों बाद ... लेकिन वेब पर खोज करने से अभी भी इस प्रश्न का कोई अच्छा जवाब नहीं मिलता है।
समाधान काफी सरल है: बस एक 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)
क्यों आप ऐसा अपने उपयोगकर्ताओं को भ्रमित करने के लिए चाहेगा? – ptomato
@ptomato मुझे एक ही चीज़ चाहिए। यह उपयोगकर्ता को भ्रमित नहीं करना है, लेकिन उपयोगकर्ता को भ्रमित नहीं करना है। मैं एक 3-पंक्ति पाठ विजेट चाहता हूं जो बिल्कुल एक प्रविष्टि विजेट की तरह व्यवहार करता है (लेकिन 3 लाइनों के साथ)। एकमात्र तरीका मुझे मिल सकता है एक टेक्स्ट व्यू विजेट को संशोधित करना ... – xubuntix