Comment intégrer un terminal dans une application Tkinter?

Je veux intégrer un terminal principal de ma fenêtre Tkinter. Je voudrais avoir une sous-fenêtre où un terminal (Bash terminal) irait. Je tiens également à être en mesure de laisser mon programme interagir avec le terminal, au moins, je voudrais lire le répertoire de travail courant et/ou le définir.

Je ne sais pas si c'est vraiment impossible. J'ai été en mesure de le faire dans le passé avec Perl/Tk, alors peut-être il peut être repris ici.

Le code que j'ai utilisé était alors quelque chose comme:

$frame3=$mw->Frame(-borderwidth=>2, -relief=>'groove', # -label=>'stuff for thought',
                             -labelBackground=>CADRAWWINCOLOR,-background=>CADRAWWINCOLOR);                 

$cv=$frame3->Canvas(-height=>$cvheight,-width=>$cvwidth,-background=>CADRAWWINCOLOR,
                             -bg => CADRAWWINCOLOR,
                             -relief => 'sunken')->pack(-expand => 1, -fill => 'both');

# this Frame is needed for including the xterm in Tk::Canvas 
my $xtermContainer = $cv->Frame(-container => 1);
my $xtid = $xtermContainer->id();
# converting the id from HEX to decimal as xterm requires a decimal Id
my ($xtId) = sprintf hex $xtid;

my $dcontitem = $cv->createWindow($xtermWidth/2,$xtermHeight/2,
                                       -window => $xtermContainer,
                                       -width => $xtermWidth,
                                       -height => $xtermHeight,
                                       -state => 'normal');

system("xterm -into $xtId -fn $fontname -geometry $geometry +sb -bg black -fg white -e ./xtermjob.pl $AAfname 5 &"); 

$mw était la principale fenêtre Tk.

Bien sûr, je suis complètement d'accord avec Bryan: si je n'ai jamais programmé avec une bibliothèque d'interface graphique avant, mon programme (plutôt grand, une sorte de wiki) fonctionne très bien, avec un étonnamment faible quantité de code consacré à l'interface graphique elle-même.

J'ai essayé de traduire ce code Perl, mais je suis d'achoppement sur la ID problème.

Le seul endroit où j'ai trouvé une référence à un moyen d'extraire l'ID from Tkinter est dans Effbotmais quand je l'utilise, je reçois 'AttributeError: Frame instance has no attribute 'window_id'donc il doit y avoir quelque chose de mal:

termf = Frame(root)
termf.pack(side=BOTTOM, fill=X)
id=termf.window_id()  
os.system("xterm -into %d -fn -misc-fixed-medium-r-normal--8-80-75-75-c-50-iso10646-1 -geometry 150x150+0+0 +sb -bg black -fg white -e /root/.bashrc &" % id);  

source d'informationauteur alessandro