मेनू में gtk.Calendar दिखा रहा है?
मैं एक तिथि चुनने के लिए मेनू आइटम के साथ एक संदर्भ मेनू बनाना चाहता हूं। (उपयोग का मामला एक वृक्षदृश्य में वस्तुओं का एक गुच्छा चुन रहा है और फिर सभी वस्तुओं के लिए एक नई देय तिथि निर्धारित कर रहा है।)
चूंकि मेन्यूइटम एक जीटीके.बिन है, इसलिए मैं किसी लेबल के स्थान पर कोई विजेट निर्दिष्ट कर सकता हूं। हालांकि, मैं विजेट के साथ इंटरैक्ट पर प्रतीत नहीं कर सकता। यदि मैं मेनू पर कहीं भी क्लिक करता हूं, तो मेन्यूइटम क्लिक प्राप्त करता है। इसलिए, मैं किसी विशेष तारीख का चयन नहीं कर सकता, न ही महीनों या वर्षों पर नेविगेट कर सकता हूं। मैं कैलेंडर को माउस गतिविधि कैसे प्राप्त कर सकता हूं?
इसके अलावा, कैलेंडर के बाहर के आसपास बाहरी पैडिंग भी है, और जब उस पर आच्छादित नारंगी हो जाता है। मैं पैडिंग को हटा सकता हूं और/या नारंगी हाइलाइट नहीं कर सकता?
#!/usr/bin/env python
import gobject
import pygtk
pygtk.require('2.0')
import gtk
import time
class ContextMenu(gtk.Menu):
def __init__(self):
gtk.Menu.__init__(self)
def add_calendar_submenu_item(self, text, callback, uuids, data=None):
calendar = gtk.Calendar()
calendar.show()
calendar_item = gtk.MenuItem()
calendar_item.add(calendar)
calendar_item.show()
submenu = gtk.Menu()
submenu.append(calendar_item)
submenu_item = gtk.MenuItem("%s..." %(text))
submenu_item.set_submenu(submenu)
submenu_item.show()
submenu_item.connect("activate", self.on_calendar_activate)
self.append(submenu_item)
def on_calendar_activate(self, widget):
print "activate"
if __name__ == "__main__":
class CalendarExample:
def __init__(self):
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.set_title("Calendar Example")
window.set_border_width(5)
window.set_size_request(200, 100)
window.set_resizable(False)
window.stick()
window.connect("destroy", lambda x: gtk.main_quit())
menu = ContextMenu()
menu.add_calendar_submenu_item("date", self.on_date, ['123'])
root_menu = gtk.MenuItem("Calendar Menu")
root_menu.show()
root_menu.set_submenu(menu)
vbox = gtk.VBox(False, 10)
window.add(vbox)
vbox.show()
menu_bar = gtk.MenuBar()
vbox.pack_start(menu_bar, False, False, 2)
menu_bar.append (root_menu)
menu_bar.show()
button = gtk.Button("Push Me")
button.connect("clicked", self.on_menu_push, menu)
vbox.pack_start(button, False, True, 10)
button.show()
window.show()
def on_menu_push(self, widget, menu):
menu.popup(None, None, None, 0, 0)
def on_action(self, widget, uuids, text):
print "Item %s pressed" %(text)
def on_date(self, widget, uuids, text):
print "Calendar activated with %s" %(text)
CalendarExample()
gtk.main()
[अपडेट]
क्या मैं के लिए जा रहा हूँ उबंटू का सूचक मेनू तारीख के लिए कुछ सदृश/समय कैलेंडर है।
यह बदसूरत है, क्योंकि वहां कोई और मेनू आइटम नहीं हैं, आप कैलेंडर को पॉपअप विंडो के अंदर क्यों डालते हैं? – saeedgnu
आप उस पॉपअप विंडो में कई बटन या यहां तक कि एक टूलबार भी डाल सकते हैं (यदि आप पॉपअप में और अधिक क्रियाएं चाहते हैं) – saeedgnu
मैंने पहले पॉपअप विंडो दृष्टिकोण का प्रयास किया था, लेकिन पॉपअप मेनू को सही ढंग से स्थानांतरित करना ऐसा लगता है कि यह बहुत मुश्किल होगा , विशेष रूप से यह मानते हुए कि मेनू के आयाम उपयोगकर्ता की भाषा और फ़ॉन्ट वरीयताओं के आधार पर भिन्न हो सकते हैं। यदि मैं उपरोक्त काम पर नहीं किया जा सकता है तो मैं इसे फॉलबैक विकल्प के रूप में रख रहा हूं। – bryce