আপনি লগইন করার আগে আমাকে এই প্রশ্নগুলির উত্তর দিতে হবে 3?


22

আমার দুটি বাচ্চা আছে যে উবুন্টুকে এত ভালবাসে যে তারা তাদের ম্যাথের হোমওয়ার্কটি করছে না। সুতরাং মন্টি পাইথনের চেতনায় আমি তাদেরকে এমন কিছু উপস্থাপন করতে চাই:

"থামুন Who মৃত্যুর সেতুটি কে পার করবেন সে অবশ্যই আমাকে এই প্রশ্নগুলির তিনটি উত্তর দিতে হবে, অন্যদিকে তিনি দেখেন" "

লগ ইন এ।

তারা লগইন করার আগে কয়েকটি গণিত সমস্যা সমাধান করতে হবে।

আমার প্রশ্ন: এই ধরণের জিনিসটি কি করা যায়?


আমি কি নিজের xscreensaver মডিউলটি লিখে এটি করতে পারি? অথবা সম্ভবত এটিকে / ইত্যাদি / প্রোফাইলে যুক্ত করবেন?
ব্যবহারকারী 187493

1
আপনি নিজের প্লাগেবল অথেনটিকেশন মডিউল (পিএএম) এবং লাইটডিএম গ্রিটারের সাথে কীভাবে এটি সংহত করতে পারেন তা লেখার বিষয়টিও দেখতে চাইতে পারেন।
ফ্যাশনাল

ধন্যবাদ এটি হ'ল ঠিক সেই ধরণের পরামর্শের জন্য আমি সন্ধান করছিলাম :) আমি আমার সিস্টেমটি ভেঙে ফেলার খুব ভয় করি না। আমি মনে করি যদি আমি কিছু ভঙ্গ না করি যা আমি এটি সঠিকভাবে করছি না।
ব্যবহারকারী 187493

উত্তর:


30

নীচে Gtk বাইন্ডিংস (পাইগবজেক্ট) ব্যবহার করে উবুন্টু 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
  • vi /home/kid/.xsession

ফাইলটিতে নিম্নলিখিতগুলি যুক্ত করুন:

#!/bin/bash
lightdm &
exec /home/kid/puzzle.py
  • vi /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()

ফলাফল:

  • আপনি যদি লগআউট করেন, লগইন স্ক্রিনে আপনি কাস্টম নামে একটি নতুন অধিবেশন দেখতে পাবেন।
  • কাস্টম সেশনটি বাছাই করে এবং সফল লগইন করার পরে আপনি একটি ছোট পাইগিটক (পাইগোবজেক্ট ব্যবহার করে) উইন্ডো দ্বারা গণিত ধাঁধা জিজ্ঞাসা করবেন। এখানে শীর্ষস্থানীয় বার, আরম্ভকারী এবং ডিফল্ট ডেস্কটপ উইজেটগুলি থাকবে না:

ইউনিটিতে কাস্টম অ্যাক্সেস

  • আপনি যদি সঠিকভাবে উত্তর দেন, Unক্য লোড হবে ...

যদিও এটি আরও গবেষণা প্রয়োজন তবে আমি আশা করি এটি একটি প্রাথমিক পয়েন্ট হিসাবে সহায়তা করবে।


@ ব্যবহারকারী 187493 আপনি যদি মনে করেন যে আপনার সমস্যার সমাধান হয়েছে, তবে উত্তরটি গ্রহণ করার বিষয়টি বিবেচনা করুন।
স্টিফ কে

আপনি যদি কোনও পাঠ্য-ভিত্তিক সমাধানটি আপত্তি করেন না, আপনি কেবল একটি সাধারণ শেল স্ক্রিপ্ট লিখতে পারেননি যা কয়েকটি প্রশ্ন জিজ্ঞাসা করে এবং উত্তরগুলি পরীক্ষা করে। উত্তরগুলি সঠিক হলে, একটি স্টার্টেক্স করুন, অন্যথায়, লগআউট করুন। তারপরে, সম্পাদনা করুন / ইত্যাদি / পাসডাব্লুড এবং এই স্ক্রিপ্টটিকে তাদের লগইন শেল করুন। এটি উপরের সমাধানের চেয়ে কম মার্জিত, তবে কোড এবং বজায় রাখার পক্ষে সহজ উপায়। এটি তুলনামূলকভাবে ডিস্ট্রো / ডেস্কটপ স্বতন্ত্র হওয়া উচিত। এটি সিগিন্টের (সিটিআরটিএলসি) মতো জিনিস পরিচালনা করে তা নিশ্চিত করার জন্য আপনাকে এটি পরীক্ষা করতে হবে।
জো

খুব সুন্দর! এটি এমন ধরণের জিনিস যা আমি সত্যিই পছন্দ করি।
জ্যাকব ভ্লিজম

3

এটি করা যেতে পারে, তবে প্রযুক্তিগত জ্ঞান অনেক বেশি লাগবে। মূল হিসাবে চালিত স্ক্রিপ্ট লিখে এটি করার সহজ উপায়:

  • প্রদত্ত প্রশ্নের উত্তরে তাদের পাসওয়ার্ড (গুলি) স্বয়ংক্রিয়ভাবে পরিবর্তন করে,
  • তারা যে প্রশ্নের উত্তর দিতে চাইছে তা প্রদর্শন করতে তাদের ডেস্কটপ ওয়ালপেপার পরিবর্তন করে

আপনার সম্ভবত কোনও পাঠ্য ফাইলে (বা ডাটাবেস) গণিত সমস্যার তালিকা রাখা দরকার এবং ডেস্কটপ ওয়ালপেপারে সমস্যার পাঠ্য যুক্ত করতে ইমেজম্যাগিক কমান্ড লাইন সরঞ্জামগুলি ব্যবহার করতে হবে। প্রতিবার (দৈনিক?) প্রায়শই চালানোর জন্য সেই স্ক্রিপ্টটি নির্ধারণ করার জন্য ক্রোন ব্যবহার করুন।

3 টি পৃথক প্রশ্ন জিজ্ঞাসা করার জন্য লগইন স্ক্রিন পেতে প্রচুর কাস্টম হ্যাকিংয়ের প্রয়োজন হবে এবং সম্ভবত এটি আপনার সিস্টেমের বৃহত অংশগুলি প্রতিস্থাপনের সাথে জড়িত থাকতে পারে, তাই এটি প্রস্তাবিত নয় not এমনকি উপরের "সরল" স্ক্রিপ্টের জন্যও প্রচুর দক্ষতা এবং জ্ঞান প্রয়োজন, এবং ভুল হয়ে থাকলে সম্ভবত আপনার সিস্টেমটি ভেঙে দিতে পারে।


আপনার উত্তরের জন্য ধন্যবাদ. আমি প্রশ্ন এবং উত্তরগুলির একটি মিনি ডাটাবেস ব্যবহার করতে যাচ্ছিলাম এবং আমি চিত্রগ্রাহক ব্যবহারের ধারণাটি পছন্দ করি।
ব্যবহারকারী 187493
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.