জিটিকে 3 এ ভিটিই টার্মিনাল উইজেট কীভাবে যুক্ত করবেন?


8

আমি vteআমার অ্যাপ্লিকেশনটিতে এবং .fork_command()উইজেটটিতে একটি কমান্ড কার্যকর করার জন্য যে উদাহরণগুলি পেয়েছি তার মধ্যে আমি উইজেট যুক্ত করার চেষ্টা করছি । তবে অনুযায়ী

http://developer.gnome.org/vte/0.26/VteTerminal.html#vte-terminal-fork-command

এটি অবচয় করা হয়েছিল এবং এটি ব্যবহারের জন্য প্রস্তাবিত fork_command_full()। যার আটটি বাধ্যতামূলক যুক্তি প্রয়োজন needs তারা কি " ডিফল্ট " শব্দটি শুনেনি ? আমি কোনওভাবে কাজ করে এমন লাইনগুলি তৈরি করতে সক্ষম হয়েছি:

pty_flags = vte.PtyFlags(0)
terminal.fork_command_full(pty_flags, "/home/int", ("/bin/bash", ), "", 0, None, None)

হ্যাঁ, আমি এনামগুলির সম্পর্কে জানি, আমি কেবল আশা করি যে আমি এটি পুরোপুরি ভুল করছি এবং আরও একটি সহজ উপায় আছে। তুমি কি কিছু জান?

পিএস আমি quicklyডিফল্ট ubuntu-applicationটেম্পলেট ব্যবহার করছি ।

পিপিএস আমদানি লাইন হয় from gi.repository import Vte as vte


আপনার কাছে দীর্ঘ লাইনটি একগুচ্ছ বার বা মাত্র একবার?
রোবটহুমানস

1
এখনই ঠিক এখন তবে আমি ভবিষ্যতে এগুলি গতিশীলভাবে যুক্ত করতে চাই।
int_ua

উত্তর:


14

এখানে একটি প্রাথমিক উদাহরণ:

#!/usr/bin/env python

from gi.repository import Gtk, Vte
from gi.repository import GLib
import os

terminal     = Vte.Terminal()
terminal.spawn_sync(
    Vte.PtyFlags.DEFAULT,
    os.environ['HOME'],
    ["/bin/sh"],
    [],
    GLib.SpawnFlags.DO_NOT_REAP_CHILD,
    None,
    None,
    )

win = Gtk.Window()
win.connect('delete-event', Gtk.main_quit)
win.add(terminal)
win.show_all()

Gtk.main()

টার্মিনালে 'প্রস্থান' জমা দেওয়া কোনও ব্যবহারকারীকে কীভাবে আমি ধরা / পরিচালনা / পুনরুদ্ধার করতে পারি? প্রস্থান করার সময় আমি একটি নতুন ভিটিই টার্মিনাল স্প্যান করা প্রয়োজন? বা সম্ভবত টার্মিনালের ভিতরে একটি নতুন শেল স্প্যান? অতিরিক্ত হিসাবে, আপনি কীভাবে ভিটিই টার্মিনালটি পরিচালনা করতে পারেন, যেমন একটি জিটিকে বোতাম টিপে ক্লিক করে ওপেনিং ব্যাশ ডকুমেন্টেশনের সাথে লিঙ্ক করতে পারেন?
থারস্মমনার

5

ভবিষ্যতে তাদের ডায়নামিকভাবে যুক্ত করতে চাইলে অ্যাডকম্পের উত্তরের ভিত্তিতে আমি মনে করি আপনি ভেটে.টার্মিনালটি সাবক্লাস করতে পারেন।

#!/usr/bin/env python

from gi.repository import Gtk, Vte
from gi.repository import GLib
import os

class MyTerm(Vte.Terminal):
    def __init__(self, *args, **kwds):
        super(MyTerm, self).__init__(*args, **kwds)
        self.spawn_sync(
            Vte.PtyFlags.DEFAULT,
            os.environ['HOME'],
            ["/bin/sh"],
            [],
            GLib.SpawnFlags.DO_NOT_REAP_CHILD,
            None,
            None,
            )

win = Gtk.Window()
win.connect('delete-event', Gtk.main_quit)
bigbox = Gtk.Box()
win.add(bigbox)
bigbox.add(MyTerm())
bigbox.add(MyTerm())
win.show_all()

Gtk.main()

ধন্যবাদ :) __init__(self, command)আরও সুন্দর হবে, আমি এটি পরে চেষ্টা করব।
int_ua

@ ইন্দ_আয়া - আপনি কী চেয়েছিলেন? আমি ভেবেছিলাম আপনি কেবল প্রশ্নের প্রেক্ষাপট থেকে একটি শব্দ এম্বেড করতে চেয়েছিলেন
রোবটহুমানস

4

ভিটিই 0.38 সাল vte_terminal_fork_command_full ()থেকে নতুন নামকরণ করা হয়েছে vte_terminal_spawn_sync ()। সুতরাং আপনি যদি নতুন সংস্করণ ব্যবহার করেন তবে আপনাকে @ এডকম্পের উত্তরটি নীচে পরিবর্তন করতে হবে :

terminal.spawn_sync(
    Vte.PtyFlags.DEFAULT,
    os.environ['HOME'],
    ["/bin/sh"],
    [],
    GLib.SpawnFlags.DO_NOT_REAP_CHILD,
    None,
    None,
    )
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.