<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=koi8-r"> <META NAME="GENERATOR" CONTENT="lfparser_1.5"> <!-- lfparser can be obtained from http://www.linuxfocus.org/developer/Guido/lfparser.html --> <META NAME="LFCATEGORY" CONTENT="Software Development"> <TITLE>Software Development</TITLE> </HEAD> <BODY bgcolor="#ffffff" text="#000000" alink="#336633" link="#336633" vlink="#336633"> <MAP name="top"> <AREA shape="rect" coords="367,9,418,30" alt="Home" href="../index.html"> <AREA shape="rect" coords="423,9,457,30" alt="Map" href="../map.html"> <AREA shape="rect" coords="463,9,508,30" alt="Index" href="../indice.html"> <AREA shape="rect" coords="514,9,558,30" alt="Search" href="../Search/index.shtml"> </MAP> <MAP name="bottom"> <AREA shape="rect" coords="78,0,163,15" alt="News" href="../News/index.shtml"> <AREA shape="rect" coords="189,0,284,15" alt="Archives" href="../Archives/index.html"> <AREA shape="rect" coords="319,0,395,15" alt="Links" href="../Links/index.shtml"> <AREA shape="rect" coords="436,0,523,15" alt="About LF" href="../aboutus.html"> </MAP> <!-- IMAGE HEADER --> <CENTER> <IMG src="../../common/images/Topbar-ru.gif" width="600" height="40" border="0" alt="[Top bar]" ismap usemap="#top" ><BR> <IMG src="../../common/images/Bottombar-ru.gif" width="600" height="21" border="0" alt="[Bottom bar]" ismap usemap="#bottom"> </CENTER> <!-- SSI_INFO --> <!-- tr_staticssi include virtual --> <!-- tr_staticssi exec cmd --> <!-- addedByLfdynahead ver 1.1 --><TABLE ALIGN="right" border=0><TR><TD ALIGN="right"><FONT SIZE="-1" FACE="Arial,Helvetica">��� ������� �������� ��: <A href="../../English/November2000/article174.shtml">English</a> <A href="../../Castellano/November2000/article174.shtml">Castellano</a> <A href="../../Deutsch/November2000/article174.shtml">Deutsch</a> <A href="../../Francais/November2000/article174.shtml">Francais</a> <A href="../../Nederlands/November2000/article174.shtml">Nederlands</a> <A href="../../Russian/November2000/article174.shtml">Russian</a> <A href="../../Turkce/November2000/article174.shtml">Turkce</a> </FONT></TD></TR></TABLE><br> <!-- SHORT BIO ABOUT THE AUTHOR --> <TABLE ALIGN=LEFT BORDER=0 CELLSPACING=0 CELLPADDING=5 WIDTH="30%" > <TR> <TD><IMG SRC="../../common/images/Charles-V.jpg" ALT="[Photo of the author]" HEIGHT=106 WIDTH=100> <BR>����� <A HREF="mailto:charles_vidal@bigfoot.com">Charles VIDAL</A> <BR><BR> <I>�� ������ :</I><BR> <P> �������� ����������������� ������ � ������. ����������� ��������� GNU � Open Source �� ����������� ������ ��������. ����� �� �������� ����� ��� ���� �� ���������.</P> <P><FONT COLOR="#336633">����������</FONT>: <UL> <LI><A HREF="#lfindex0"> Tk ����������� �������������� Tcl :WISH</A></LI> <LI><A HREF="#lfindex1"> Hello world !</A></LI> <LI><A HREF="#lfindex2">�������� ������������ ������� Tk</A></LI> <LI><A HREF="#lfindex3">��������� ������� � GUI</A></LI> <LI><A HREF="#lfindex4">�������� ����������� �������� : "hello world"</A></LI> <LI><A HREF="#lfindex5"> ��������������: ���������� ���������� ������ ���������.</A></LI> <LI><A HREF="#lfindex6">�������������� ����������� �������� � �����������.</A></LI> <LI><A HREF="#lfindex7">������ ������</A></LI> <LI><A HREF="#lfindex8">������ ��������� ��������</A></LI> <LI><A HREF="#lfindex9">�������</A></LI> <LI><A HREF="#lfindex10">��������� ������</A></LI> <LI><A HREF="#lfindex11">������</A></LI> <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=174&lang=ru">�������� �������</A></LI> </UL> </P> </TD></TR></TABLE> <!-- HEAD OF THE ARTICLE --> <H2>������� Tk</H2> <img src="../../common/images/illustration174.gif" alt="logo de Tcl Tk" HEIGHT=150 WIDTH=97 ><P><FONT COLOR="#336633">������</FONT>: <P> ���� ������� - ������������ ������������ �������������� Tcl : <b>Tk</b>. ����� ����� ������������������ �������� GUI � ��������� �����. </P><HR size="2" noshade><BR> <!-- BODY OF THE ARTICLE --> <A NAME="lfindex0"> </A> <H2> Tk ����������� �������������� Tcl :WISH</H2> <p> Tk ��� ���������� ��� ���������� ����� Tcl ������������ �������������, ������ �� ��������� ��� Tcl/Tk ( ������������ ��� Tikel/Tikey ). </p> <p> ��� ������������������ ����������� ��������������, ������������ ��� ����� ��. Tk ��������� ���������� � ������ ������������������ ������������ - ������ Tcl. �������� ������������� ���� ������ �������� �������� �������������. ������������� ����������� ���������� ��������� ����� ������. </p> <A NAME="lfindex1"> </A> <H3> Hello world !</H3> ���������������� �������� � �������� ���������� ���� ������ �� ������������ ������� : <pre> pack [ label .l -text "Bonjour monde" ] </pre> <CENTER> <img src="../../common/images/article174/image174_1.jpg" HEIGHT=20 WIDTH=94 > </CENTER> <br> ������� � gtk: <pre> #include <gtk/gtk.h> Int main( int argc, char *argv[] ) { /* GtkWidget is the storage type for widgets */ GtkWidget *window; GtkWidget *button; gtk_init(&&argc, &&argv); /* create a new window */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); button = gtk_button_new_with_label ("Bonjour Monde"); gtk_container_add (GTK_CONTAINER (window), button); gtk_widget_show (button); /* and the window */ gtk_widget_show (window); gtk_main (); return(0); } </pre> ��� � Motif <pre> /* COMPILE cc xmhello.c -L/usr/X11R6/lib -lXm -lXt -lX11 -lXmu -o xmhello */ #include <Xm/PushB.h> #include <Xm/Form.h> /* Widget */ Widget main_widget, pushb; main(int argc, char **argv) { Widget form; Arg args[1]; int ac = 0; XmString label_str; main_widget = XtInitialize(argv[0], "test", NULL, 0, &&argc, argv); label_str = XmStringCreate("Bonjour Monde", XmSTRING_DEFAULT_CHARSET); XtSetArg(args[ac], XmNlabelString, label_str); ac++; pushb = XmCreatePushButton(main_widget, "hello", args, ac); XtManageChild(pushb); XtRealizeWidget(main_widget); XtMainLoop(); } </pre> �� ����� ���� �������� ������ ���������� ��� ���������� ��� �������������� � �����������. � ���� ������ ����������� ���������� �� ������ ������, ���������� ����������. ������������ ������ ������, ��� ��� �� ����� ������� - ��������� ������ ��������� � ������� Tk �������� ������������� ������. �� ����� �������� ���� ���������� �������� �������� �� ���������. <br> ���������� ��������� ����������, ���������� ������� ��� Tk Widget - �������� Qtk, ��� TkStep. <br> ����������� � ��, ��� Tk ����� ��������� � ��������� �� ���������� ������ : <ul> <li> C <li> C++ <li> <a href="http://www.python.org">Python</a> (<a href="http://www.python.org/topics/tkinter/"> Tkinter </a> ) <li> <a href="http://search.cpan.org/Catalog/User_Interfaces/Tk/">Perl </a> <li> Eiffel <li> Ada <li> Modula-3 <li> <a href="http://caml.inria.fr/index-eng.html">caml </a> <li>...<a href="http://dev.scriptics.com/faq/part1.html">�������������� ����������</a> </ul> ��� � ����������� ��������������� - ������ Tcl/Tk ������������������. <A NAME="lfindex2"> </A> <H3>�������� ������������ ������� Tk</H3> �������������� �������� ����� ������� �������� ( widgets ) ��� ���������� GUI. <UL> <LI> labels : <B>label</B> <LI> buttons : <B>button</B> <LI> check buttons: <B>checkbutton</B> <LI> radio buttons : <B>radiobutton</B> <LI> menus : <B>menubutton</B> <LI> menus items : <B>command, radio, check, cascade</B> <LI> scrollbar : <B>scrollbar</B> <LI> text : <B>text</B> <LI> entry : <B>entry</B><BR> <LI> canvas : <B>canvas</B><BR> <LI> frame : <B>frame</B> <LI> listbox : <b>listbox</B> <li> scale :<b>scale</b> <li> Misc dialog box ( fileselection box, warning dialog etc. ) </uL> <p> ��� ��������� ��������� ��������� � ������� <code>/usr/local/lib/tk8.0/demos/</code> � ��������� <b>widget</b>. </p> <p> ����� ��������� ���������. �� ���������� ����������, ��������� ���������� ������ � ����������, ����� ������� �������� ��������� : <a href="http://www.tix.com">Tix</A>, <A HREF="http://www.tcltk.com/iwidgets/">the widgets Incr Tcl </A>, <a href="http://www.unifix-online.com"> BWidget</A>, ��� �������� �� ����� <A HREF="http://dev.scriptics.com/resource/software/extensions/tk/"> scriptics</A> </p> <A NAME="lfindex3"> </A> <H3>��������� ������� � GUI</H3> �� ���� ���� GUI ����� ���������������� ��� ����� "����" �� ������ ����������. <br> �������� ��������� ������� ��������� ��� ��������, �������� ������. ��������� � ����� Tcl/Tk ����������� ��������� ������� : <ul> <li> the . for the root <li> the .(name_container.)*name_of_graphical_object </ul> ����� ����������� ��������� <b>wish</b> ���������� ����, � ������ <b>.</b> <I>( ����� )</I>. <A NAME="lfindex4"> </A> <H3>�������� ����������� �������� : "hello world"</H3> ������� ����� Tcl ��� �������� ������������ ������� ����� ��������� ��������� : <br> <i>name_object .(name_container.)*name_graphical_object [property value] </i> <br> <b>������ :</b> <code>label .mylabel -text "hello world"</code> <p> ���������� �������� : ������ ���������� � �������� �������, ������� ���������� �������, ����� �������� ��� ����������� ����������, ��� <b>.</B> ���������� "root window" � ��������� �������� (-text " hello Word "). �������, ��� ������ � ��������� ����������� ����� �������� ������ ������� : </p> <ul> <li>������ � ��������� ������������ ������� �������������� � ������� ������� <b>cget</b> (<b>C</b>onfiguring <b>get</b>). <i>������ :</i> <pre> .mylabel cget text hello world </pre> <li> ��������� - � ������� ������� <b>configure</b>. ������� ���������� ��� ���������� ������� ( ����� .mylabel ). <i>������:</i> <pre> .mylabel configure -text "Bonjour Monde in french :)" </pre> </ul> <br> ������ ������ �������� ����� "Bonjour Monde in french :)" <br> ����� ������� �������������� �������� : <code>puts [label .mylabel -text "hello world"]</code> ����� ������ ����� ������� ��������� ���������� ������ ������� : <br> <pre> .mylabel configure -text " This is the date [exec date ]" </pre> ��� ��������� ��������� ��� ��������� ������� ����������� ������� : ".ylabel configure" � ������������� ������ Wish. <br> ����������� ���������� ����� ������ � ������ ������� ��������� ��� ���������. <br> <A NAME="lfindex5"> </A> <H3> ��������������: ���������� ���������� ������ ���������.</H3> <b> <i>������ �� ����������, ������ �� ������������ �� �������.</i></b> <p> �������, �� ���� ������ ������� ������, �� �� ������ ��� �� �����. ��� ����������� ������� ���������� �������������� ����������, ������� �� ��� �� ���������� - � ����� ���� ���� ������� ������. </p> ���������� ��������� layouts: <ol> <li> The packer <li> The placer <li> The grid </ol> ������� ���������� : the packer. <p> <b>������������������� Hello Word </b> <br> <br> <code> label .mylabel -text "hello world" pack .mylabel </code> <br> ��� ����� ������� <br> <code>pack [label .mylabel -text "hello world"]</code> </p> <br> <p> <b> ������ </b> ���������� ������ ������ : <code> button .myboutton -text "hello world" -command "exit" pack .myboutton </code> �������, ��� �� �������� ��������� "command", ����� ������� ����� ��������� ������� ����� tcl ��� ������� ������������� �� ������. � ����� ������� ��� ������� <b>exit</b> ��� ������ �� ���������. </p> <A NAME="lfindex6"> </A> <H3>�������������� ����������� �������� � �����������.</H3> ���� Tcl/tk � ���������� �������� � �����������, ������� ������������� ��������� �� ���������. ���������� ��� ������������� �������� �������������� �������, ����� ������ ��������� �������. � ������ ������� - ��������� �������� ���������� ������������� ������ ��������� ��������� �������. ��� ������ ��� ���������� ����� �������� � ����������� � ������. <b><i>������</i></b> <p> <b>Checkbuttons � radiobuttons.</b> <ol> <li>Checkbutton ���������� ��������� - ���������� ��� ���. <br> � ������ ��������� ����� ������� ����������, ����������� �������� 0 ( �� ��������� ) ��� 1 � ����������� �� ���������, � ������ ������� �� ���� ����� ���������� ��������� �������� ����� ������������ ���������� ������������� ��������. <br> ������ : <code> checkbutton $w.b1 -text "Wipers OK" -variable wipers -relief flat -onvalue "Ok" -offvalue "not Ok" </code> <br> <li>Radiobutton ���������� ��������� ������ ���������. <br> ��� �������� ���� ����� ������������� � ��������� ����� ������ ������ �� ���. ����� ������������� �������� - ���������� ��������� �� � ����� ����������, �������� ������� � ����� ��������������� ��������� �������. <br> ������ : <br> <code> radiobutton .b1 -text "Premier " -variable size -value 1 radiobutton .b2 -text "Second " -variable size -value 2 </code> <li>Entry <br> ���� ������� - ������, ���� ������������ ����� ������� �����. <br> ������ : <br> <code> entry .e -textvariable toto -width 40 </code> </ol> </p> <A NAME="lfindex7"> </A> <H3>������ ������</H3> ������ �������� ���������� � �����. ������ ����������� � �� ����������� ����� ������ layout manager � ����� �����. ���������� ������������ layout managers : <ol> <li> The packer: ������������� ������ : <ol> <li> top <li> bottom <li> right <li> left </ol> <p> <b>������ :</b> <table> <tr> <td> <pre> pack [ button .b1 -text top ] -side top pack [ button .b2 -text bottom ] -side bottom pack [ button .b3 -text right ] -side right pack [ button .b4 -text right ] -side left </pre> </td><td align="CENTER"> <img src="../../common/images/article174/image174_2.gif" HEIGHT=78 WIDTH=102 > </td></tr> </table> </p> <p> <li> The placer: ���������������� ������� �� "x" � "y". <p> <b>������ :</b> place [ label .l -text "With Place"] -x 100 -y 100 .l configure -bg red </p> <CENTER> <img src="../../common/images/article174/image174_3.gif" HEIGHT=226 WIDTH=210 > </CENTER> <li> The grid ������� ������������� � ����������� �����, ��������� �� ����� � ��������. ������ ����� ��� �������� ��� listboxes ��� multiple lines editboxes. ��������� : <code> label .mainlbl2 -text "Label 2" -bd 2 -relief sunken grid .mainlbl2 -row 0 -column 1 -sticky news label .mainlbl1 -text "Label 1" -bd 2 -relief raised grid .mainlbl1 -row 0 -column 0 -sticky news label .mainlbl3 -text "Label 3" -bd 2 -relief solid grid .mainlbl3 -row 1 -column 0 label .mainlbl4 -text "Label 4" -bd 2 -relief groove grid .mainlbl4 -row 1 -column 1 </code> </p> <CENTER> <img src="../../common/images/article174/image174_4.jpg" HEIGHT=103 WIDTH=208 > </CENTER> </ol> <A NAME="lfindex8"> </A> <H3>������ ��������� ��������</H3> <p> ������� <b>winfo</b> ������� ������ ��������� ��������. <pre> winfo exists name_object </pre> ��� : <pre> winfo children . </pre> </p> <A NAME="lfindex9"> </A> <H3>�������</H3> <p> �������� <i>-command</i> ���������� �������� ����������� � ����� �� �������. �� ������ ������, ����� ���������� ����� ����� ��������� �������� ��� ����������� ��������� �������. ��� ���� ���� ������ ������ <i>canvas</i>. </p> <code> bind name_of_widget name_of_event tcl_code. </code> <br> <A NAME="lfindex10"> </A> <H3>��������� ������</H3> �������� GUI ��� ��������� ����������� tar ( gz ) ������. <br> ��������� ������� �� list � scrollbars. <br> ���� ������� �������� ��������� ������� : <ol> <li> ������� gui (proc makegui). <li> �������� ��� ������� � <b>tabgui</b>. <li> ������ �� ����������� ���������� - ���� �� ��� - ��������� ���������. <li> ��������� ������� tar -tzvf ���_�����_tar. <li> ������ ������ ���������� � list. </ol> <pre> ������ �� �������� "Control C" ��� ���������� ���������� : bind all <Control-c> {destroy .} </pre> ����� ������� �������� ������ : ��������� ���� ���� ��� ��� �������� ����� tcl <b>string first</b>; ���� �� ��� ������� �������� - ������� ���� ������ �����; ������� ���� ��� ������ �������� ��� ������� ������, �������� ������ ����� ��� ������... <pre> #!/bin/sh # the next line restarts using wish \ exec wish8.0 "$0" "$@" global tabgui proc makegui { } { global tabgui # # Creation of the scrollbars for the list # then the horizontal scrollbar is placed right, filling up horizontally the window # and the vertical scrollbaris placed below, filling up vertically the window # set tabgui(scrollv) [scrollbar .scrollv -command ".list yview"] pack $tabgui(scrollv) -side right -fill y set tabgui(scrollh) [scrollbar .scrollh -command ".list xview" -orient horizontal ] pack $tabgui(scrollh) -side bottom -fill x # # Creation of the list associating it to the scrollbar # # set tabgui(list) [listbox .list \ -yscroll "$tabgui(scrollv) set" \ -xscroll "$tabgui(scrollh) set" \ -relief sunken -width 20 -height 20 \ -setgrid yes ] pack $tabgui(list) -side left -fill both -expand yes wm minsize . 1 1 } # # Creation of the GUI # makegui if $argc>0 {set tarfile [lindex $argv 0]} else {puts stderr "tar file missing" ; exit} set command "tar -tzvf $tarfile" set tube [ open |$command r] while {![eof $tube]} { set tarresult [ gets $tube ] $tabgui(list) insert end $tarresult } bind all <Control-c> {destroy .} </pre> <CENTER> <img src="../../common/images/article174/image174_5.jpg" HEIGHT=363 WIDTH=193 > </CENTER> <A NAME="lfindex11"> </A> <H3>������</H3> <ul> <li><a href="http://www-lipn.univ-paris13.fr/%7Ehamon/SJ-TclTk/">A good tutorial (in french) </a> <li><a href="http://www.unifix-online.com">Unifix online and the B Widget</a> <li><a href="http://www.scriptcs.com">Scriptics </a> </ul> <A NAME="talkback"> </a> <h2>�������� �������</h2> � ������ ������� ���� �������� �������. �� ���� �������� �� ������ �������� ���� ����������� ��� ����������� ����������� ������ ���������. <center> <table border="0" CELLSPACING="2" CELLPADDING="1"> <tr BGCOLOR="#C2C2C2"><td align=center> <table border="3" CELLSPACING="2" CELLPADDING="1"> <tr BGCOLOR="#C2C2C2"><td align=center> <A href="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=174&lang=ru"><b> talkback page </b></a> </td></tr></table> </td></tr></table> </center> <HR size="2" noshade> <!-- ARTICLE FOOT --> <CENTER><TABLE WIDTH="95%"> <TR><TD ALIGN=CENTER BGCOLOR="#9999AA"> <A HREF="../../common/lfteam.html">Webpages maintained by the LinuxFocus Editor team</A> <BR><FONT COLOR="#FFFFFF">© Charles VIDAL, <a href="http://www.linuxfocus.org/copy.html">FDL</a> <BR><a href="http://www.linuxfocus.org">LinuxFocus.org</a></FONT> <BR><a href="http://linuxfocus.linuxbox.com/cgi-bin/lfcomment?lang=ru&article=article174.shtml.htm" target="_TOP"><FONT COLOR="#FFFFFF">Click here to report a fault or send a comment to Linuxfocus</FONT></A><BR></TD> <TD BGCOLOR="#9999AA"><!-- TRANSLATION INFO --> <font size=2>Translation information:</font><TABLE> <tr><td><font size=2>fr</font></td> <td><font size=2>-></font></td> <td><font size=2>--</font></td> <td><font size=2><a href="mailto:charles_vidal@bigfoot.com"><FONT COLOR="#FFFFFF">Charles VIDAL</FONT></a></font></td> </tr> <tr><td><font size=2>fr</font></td> <td><font size=2>-></font></td> <td><font size=2>en</font></td> <td><font size=2><a href="mailto:charles_vidal@bigfoot.com"><FONT COLOR="#FFFFFF">Charles VIDAL</FONT></a></font></td> </tr> <tr><td><font size=2>en</font></td> <td><font size=2>-></font></td> <td><font size=2>ru</font></td> <td><font size=2><a href="mailto:kirill@linuxfocus.org"><FONT COLOR="#FFFFFF">Kirill Poukhliakov</FONT></a></font></td> </tr> </TABLE></TD> </TR></TABLE></CENTER> <p><font size=1>2000-10-31, generated by lfparser version 1.5</font></p> </BODY> </HTML>