আপনি জিটিকি উইন্ডোতে এম্বেড থাকা ওয়েবকিট ফ্রেম ব্যবহার করে ইন্টারফেসের জন্য এইচটিএমএল + জাভাস্ক্রিপ্ট ব্যবহার করে বিকাশ করতে পারেন (পাইথনে এটি করা সবচেয়ে সহজ)। সবচেয়ে শক্তিশালী অংশটি আপনার এইচটিএমএল / জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন থেকে সিস্টেমের সাথে যোগাযোগ করছে।
জাভাস্ক্রিপ্ট এবং পাইথনের মধ্যে বার্তা পাঠিয়ে আপনি এটি করতে পারেন। পাইথন ফাংশন হিসাবে আপনাকে সিস্টেম যুক্তিকে লিখতে হবে তবে এটি করা খুব সহজ।
পাইথন এবং জাভাস্ক্রিপ্টের মধ্যে যোগাযোগের একটি সাধারণ উদাহরণ এখানে is উদাহরণস্বরূপ, এইচটিএমএল / জাভাস্ক্রিপ্ট একটি বোতাম প্রদর্শন করে, যখন ক্লিক করা হলে ["hello", "world"]
পাইথনে একটি অ্যারে প্রেরণ করা হয় যা অ্যারের সাথে একটি স্ট্রিং "হ্যালো ওয়ার্ল্ড" এ যোগ হয় এবং এটি জাভাস্ক্রিপ্টে ফেরত প্রেরণ করে। পাইথন কোডটি কনসলে অ্যারের উপস্থাপনা মুদ্রণ করে এবং জাভাস্ক্রিপ্ট কোড একটি সতর্কতা বাক্স পপ করে যা স্ট্রিংটি প্রদর্শন করে।
example.py
import gtk
import webkit
import json
import os
JAVASCRIPT = """
var _callbacks = {};
function trigger (message, data) {
if (typeof(_callbacks[message]) !== "undefined") {
var i = 0;
while (i < _callbacks[message].length) {
_callbacks[message][i](data);
i += 1;
}
}
}
function send (message, data) {
document.title = ":";
document.title = message + ":" + JSON.stringify(data);
}
function listen (message, callback) {
if (typeof(_callbacks[message]) === "undefined") {
_callbacks[message] = [callback];
} else {
_callbacks[message].push(callback);
}
}
"""
class HTMLFrame(gtk.ScrolledWindow):
def __init__(self):
super(HTMLFrame, self).__init__()
self._callbacks = {}
self.show()
self.webview = webkit.WebView()
self.webview.show()
self.add(self.webview)
self.webview.connect('title-changed', self.on_title_changed)
def open_url(self, url):
self.webview.open(url);
self.webview.execute_script(JAVASCRIPT)
def open_path(self, path):
self.open_url("file://" + os.path.abspath(path))
def send(self, message, data):
self.webview.execute_script(
"trigger(%s, %s);" % (
json.dumps(message),
json.dumps(data)
)
)
def listen(self, message, callback):
if self._callbacks.has_key(message):
self._callbacks[message].append(callback)
else:
self._callbacks[message] = [callback]
def trigger(self, message, data, *a):
if self._callbacks.has_key(message):
for callback in self._callbacks[message]:
callback(data)
def on_title_changed(self, w, f, title):
t = title.split(":")
message = t[0]
if not message == "":
data = json.loads(":".join(t[1:]))
self.trigger(message, data)
def output(data):
print(repr(data))
if __name__ == "__main__":
window = gtk.Window()
window.resize(800, 600)
window.set_title("Python Gtk + WebKit App")
frame = HTMLFrame()
frame.open_path("page.html")
def reply(data):
frame.send("alert", " ".join(data))
frame.listen("button-clicked", output)
frame.listen("button-clicked", reply)
window.add(frame)
window.show_all()
window.connect("destroy", gtk.main_quit)
gtk.main()
page.html
<html>
<body>
<input type="button" value="button" id="button" />
<script>
document.getElementById("button").onclick = function () {
send("button-clicked", ["hello", "world"]);
};
listen("alert", function (data) {alert(data);});
</script>
</body>
</html>
আপনাকে এখানে কেবলমাত্র পাইথন কোডটি মনোযোগ দিতে হবে তা হল def output(data):
ফাইলের শেষ প্রান্তের কোডটি যা বুঝতে খুব সহজ হওয়া উচিত।
এটি চালানোর জন্য নিশ্চিত হয়ে নিন python-webkit
এবং python-gtk2
ইনস্টল হয়ে গেছে তবে একই ফোল্ডারে ফাইলগুলি সংরক্ষণ করুন এবং চালনা করুন:
python example.py