рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рдирдП GTK + рдмреНрд▓реЙрдЧ рдиреЗ рдореБрдЭреЗ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдЦреБрд╢ рдХрд┐рдпрд╛ рдФрд░ рдореИрдВрдиреЗ C ++ / C рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рд╕рд░рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЕрдЬрдЧрд░ рдХрд╛рдо рдЖрдпрд╛ред GTK рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдореЗрдВ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ C ++ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╣реИ, рдЬреЛ рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИред
PyGTK
PyGTK Python рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП GTK рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдПрдХ рдмрдВрдзрди рд╣реИ, PyGTK рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдЦреБрд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, IM Gajim) рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдЬреАрдЯреАрдХреЗ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреБрдкрд╛рддрд╛ рд╣реИред
рдХреИрдЯ рдПрдкреНрд▓реАрдХреЗрд╢рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рддрд╣рддред
рдЖрд╡реЗрджрди рдЙрджрд╛рд╣рд░рдг
PyGTK рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ - рдЦреЗрд▓ рдЯрд┐рдХ рдЯреАрдПрд╕реА рдХреЛ рдкреИрд░ рдХреА рдЕрдВрдЧреБрд▓реАред
рдЧреЗрдо рд╡рд┐рдВрдбреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рд╣реЛрдЧреА - 3x3 рдмрдЯрди рдХрд╛ рдПрдХ рд╡рд░реНрдЧред
рдЦреЗрд▓ рдЦрд┐рдбрд╝рдХреА:

рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХреБрдЫ рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ: XO_Field рдФрд░ XO_Win, рдкрд╣рд▓рд╛ рд╕реНрдЯреЛрд░ рдлрд╝реАрд▓реНрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП GUI рдмрдирд╛рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЙрдмрдВрдЯреВ рдореЗрдВ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд pygtk рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЕрдиреНрдп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рдпрд╣ рдкреИрдХреЗрдЬ рдпрд╛ рдЕрдЬрдЧрд░ рдЖрд╕рд╛рди-рдЗрдВрд╕реНрдЯрд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╣реИред
рд╣рдо pygtk рдореЙрдбреНрдпреВрд▓ рд╕рдВрд╕реНрдХрд░рдг 2.0 рдпрд╛ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
import pygtk pygtk.require('2.0') import gtk
рдЪрд▓реЛ рдПрдХ рд╕рд░рд▓ рд╡рд┐рдВрдбреЛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд╕рдорд╛рдкрди рдкрд░ рд╣рдо GTK рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░реЗрдВрдЧреЗред рд╡рд┐рдзреНрд╡рдВрд╕ рд╕рдорд╛рд░реЛрд╣ рдереЛрдбрд╝рд╛ рдмрд╛рдж рдореЗрдВ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.connect("destroy", self.destroy) self.window.set_title("-.py!") self.window.set_border_width(10) self.window.set_size_request(400,400)
рдЦрд┐рдбрд╝рдХреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреНрд╖реИрддрд┐рдЬ рдПрдХ рдХреЗ рд╕рд╛рде рддреАрди рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд▓реЗрдЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рддреЛ рдмрдЯрди рд╕рд┐рд░реНрдл 3x3 рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдВрдЧреЗред рдкреНрд░рддреНрдпреЗрдХ рдмрдЯрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреВ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреНрдпреВрдЯреА рдореЗрдВ рд╕рдВрдХреЗрддреЛрдВ рдФрд░ рд╕реНрд▓реЙрдЯ рдХреЗ рд╕рдорд╛рди рд╣реИред
self.vbox = gtk.VBox(False,0) self.window.add(self.vbox) for i in range(3): box = gtk.HBox(False,0) self.boxes.append(box) for j in range(3): self.buttons[i].append(self.create_button(box)) self.buttons[i][j].connect("clicked",self.on_btn_click,i,j) self.vbox.pack_start(box,True,True,0) box.show()
рдмрдЯрди рдмрдирд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп:
def create_button(self,box): button = gtk.Button(self.field.chr) box.pack_start(button,True,True,0) button.show() return button
рдореБрдЦреНрдп GTK рдЗрд╡реЗрдВрдЯ рд▓реВрдк рд╢реБрд░реВ рдХрд░рдирд╛ рдФрд░ рд╡рд┐рдВрдбреЛ рдХреЛ рдирд╖реНрдЯ рдХрд░рдирд╛:
def main(self): gtk.main() def destroy(self, widget, data=None): gtk.main_quit()
рдмрдЯрди рджрдмрд╛рдХрд░, рдЪрд░рд┐рддреНрд░ рдХреЛ рд╕рдВрдХреЗрддрд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдЧрд▓реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдЧрд░ рд╡рд┐рдЬреЗрддрд╛ рдЕрднреА рддрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЦреЗрд▓ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо рд╡рд┐рдВрдбреЛ рд╢реАрд░реНрд╖рдХ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдЯрд┐рдХ рдЯреАрдПрд╕реА рдХреЛ рдкреИрд░ рдХреА рдЕрдВрдЧреБрд▓реА рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЦреЗрд▓ рдХрд╛рдлреА рддреБрдЪреНрдЫ рд╣реИ, рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд▓рд┐рдВрдХ рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬреАрдЯреАрдХреЗ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рдпрдерди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреАрдЖрд░рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдВрдХ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╕рдордп рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рднреА рдЙрдирдХреЗ рд▓рд┐рдП рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпреВрдЖрдИ рддрддреНрд╡реЛрдВ рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдХрдИ рд▓рд┐рдВрдХ рд╣реЛрддреЗ рд╣реИрдВред
рдкреБрдирд╢реНрдЪ
рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди 3 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдФрд░ 3 рд╕реНрддрдВрднреЛрдВ рдХреЗ рд╕рд╛рде GtkTable (рдПрдХ рдЧреНрд░рд┐рдб рдкрд░ рд╡рд┐рдЧреЗрдЯреНрд╕ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕реЗ рджреЗрд░ рд╕реЗ рдпрд╛рдж рдХрд┐рдпрд╛ред
рд╕рдордп рдХреЗ рд╕рд╛рде, рдЬреАрдЯреАрдХреЗ рдПрдкреАрдЖрдИ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдиреЛрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА gtk 3 рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдВрдзрди рд╣реИред рдпрд╣ рдзреАрд░реЗ-рдзреАрд░реЗ рдЗрд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд▓рд┐рдирдХреНрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ gtk 3 рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕рд╡рд╛рд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред
рд╕рднреА рдирдореВрдирд╛ рд╕реНрд░реЛрдд рдХреЛрдбрд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ
- рд╡рд┐рдХреА рдкрд░ PyGTK
- PyGTK рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рд╛рдЗрдЯ
- рд▓реЗрдЖрдЙрдЯ рдФрд░ рд╡рд┐рдЧреЗрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ