Gtk बाइंडिंग (PyGobject) का उपयोग करके उबंटू 13.04 और सिस्टम के पायथन के साथ निम्नलिखित का परीक्षण किया जाता है।
यहाँ एक तरह से थोड़ा गंदा है और इसे और अधिक जाँच की आवश्यकता है:
सारांश
एक .desktop
फ़ाइल जोड़ें , /usr/share/xsessions
हम इसे नाम देंगेcustom
.xsession
प्रश्न में उपयोगकर्ता पर एक फ़ाइल जोड़ें (आपके बच्चे) हम उनके उपयोगकर्ता का नाम देंगेkid
गणित पहेली के लिए पायथन जीयूआई एप्लिकेशन बनाएं और इसे से चलाएं .xsession
, हम इसे नाम देंगेpuzzle.py
विवरण
sudo vi /usr/share/xsessions/custom.desktop
फ़ाइल में निम्नलिखित जोड़ें:
[Desktop Entry]
Name=Custom
Comment=This session logs you into your managed desktop environment
Exec=/etc/X11/Xsession
X-Ubuntu-Gettext-Domain=gnome-session-3.0
फ़ाइल में निम्नलिखित जोड़ें:
#!/bin/bash
lightdm &
exec /home/kid/puzzle.py
फ़ाइल में निम्नलिखित जोड़ें:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import subprocess
import random
from gi.repository import Gtk
#----------------------------------------------------------------------
class PuzzleWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Math Puzzle", resizable=False)
super(PuzzleWindow, self).set_position(Gtk.WindowPosition.CENTER)
super(PuzzleWindow, self).maximize()
self.a_number = random.randint(1, 5)
self.b_number = random.randint(1, 5)
self.result = self.a_number + self.b_number
self.vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5)
self.label = Gtk.Label("What is the sum of the numbers bellow?")
self.number_label = Gtk.Label("{num_a} + {num_b}".format(
num_a=self.a_number, num_b=self.b_number))
self.entry = Gtk.Entry()
self.button = Gtk.Button(label="Check answer!")
self.button.connect("clicked", self.on_button_clicked)
self.vbox.pack_start(self.label, True, True, 0)
self.vbox.pack_start(self.number_label, True, True, 0)
self.vbox.pack_start(self.entry, True, True, 0)
self.vbox.pack_start(self.button, True, True, 0)
self.add(self.vbox)
def on_button_clicked(self, widget):
if int(self.entry.get_text()) == self.result:
subprocess.call("unity &", shell=True)
else:
self.label.set_text("Wrong answer, try again.")
#----------------------------------------------------------------------
def main():
"""Application's entry point"""
win = PuzzleWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
if __name__ == "__main__":
main()
परिणाम:
- यदि आप लॉगआउट करते हैं, तो लॉगिन स्क्रीन पर आपको कस्टम नामक एक नया सत्र दिखाई देगा।
- कस्टम सत्र का चयन करके और सफल लॉगिन के बाद आप एक छोटी सी PyGtk (pygobject का उपयोग करके) विंडो के साथ एक गणित पहेली के लिए पूछेंगे। कोई शीर्ष पट्टी, लॉन्चर और बाकी डिफ़ॉल्ट डेस्कटॉप विजेट नहीं होंगे:
- यदि आप सही उत्तर देते हैं, तो एकता लोड हो जाएगी ...
हालांकि इसे और शोध की आवश्यकता है लेकिन मुझे उम्मीद है कि यह एक शुरुआती बिंदु के रूप में मदद करता है।