back next

Dialog Windows

While the standard dialogs described in the previous section may be sufficient for many simpler applications, most larger applications require more complicated dialogs. For example, to set configuration parameters for an application, you will probably want to let the user enter more than one value or string in each dialog.

Basically, creating a dialog window is no different from creating an application window. Just use the Toplevel widget, stuff the necessary entry fields, buttons, and other widgets into it, and let the user take care of the rest. (By the way, don’t use the ApplicationWindow class for this purpose; it will only confuse your users).

But if you implement dialogs in this way, you may end up getting both your users and yourself into trouble. The standard dialogs all returned only when the user had finished her task and closed the dialog; but if you just display another toplevel window, everything will run in parallel. If you’re not careful, the user may be able to display several copies of the same dialog, and both she and your application will be hopelessly confused.

In many situations, it is more practical to handle dialogs in a synchronous fashion; create the dialog, display it, wait for the user to close the dialog, and then resume execution of your application. The wait_window method is exactly what we need; it enters a local event loop, and doesn’t return until the given window is destroyed (either via the destroy method, or explicitly via the window manager):

widget.wait_window(window)

(Note that the method waits until the window given as an argument is destroyed; the only reason this is a method is to avoid namespace pollution).

In the following example, the MyDialog class creates a Toplevel widget, and adds some widgets to it. The caller then uses wait_window to wait until the dialog is closed. If the user clicks OK, the entry field’s value is printed, and the dialog is then explicitly destroyed.

Creating a simple dialog
from Tkinter import *

class MyDialog:

    def __init__(self, parent):

        top = self.top = Toplevel(parent)

        Label(top, text="Value").pack()

        self.e = Entry(top)
        self.e.pack(padx=5)

        b = Button(top, text="OK", command=self.ok)
        b.pack(pady=5)

    def ok(self):

        print "value is", self.e.get()

        self.top.destroy()


root = Tk()
Button(root, text="Hello!").pack()
root.update()

d = MyDialog(root)

root.wait_window(d.top)

If you run this program, you can type something into the entry field, and then click OK, after which the program terminates (note that we didn’t call the mainloop method here; the local event loop handled by wait_window was sufficient). But there are a few problems with this example:

  • The root window is still active. You can click on the button in the root window also when the dialog is displayed. If the dialog depends on the current application state, letting the users mess around with the application itself may be disastrous. And just being able to display multiple dialogs (or even multiple copies of one dialog) is a sure way to confuse your users.

  • You have to explicitly click in the entry field to move the cursor into it, and also click on the OK button. Pressning Enter in the entry field is not sufficient.

  • There should be some controlled way to cancel the dialog (and as we learned earlier, we really should handle the WM_DELETE_WINDOW protocol too).

To address the first problem, Tkinter provides a method called grab_set, which makes sure that no mouse or keyboard events are sent to the wrong window.

The second problem consists of several parts; first, we need to explicitly move the keyboard focus to the dialog. This can be done with the focus_set method. Second, we need to bind the Enter key so it calls the ok method. This is easy, just use the bind method on the Toplevel widget (and make sure to modify the ok method to take an optional argument so it doesn’t choke on the event object).

The third problem, finally, can be handled by adding an additional Cancel button which calls the destroy method, and also use bind and protocol to do the same when the user presses Escape or explicitly closes the window.

The following Dialog class provides all this, and a few additional tricks. To implement your own dialogs, simply inherit from this class and override the body and apply methods. The former should create the dialog body, the latter is called when the user clicks OK.

 
A dialog support class (File: tkSimpleDialog.py)
from Tkinter import *
import os

class Dialog(Toplevel):

    def __init__(self, parent, title = None):

        Toplevel.__init__(self, parent)
        self.transient(parent)

        if title:
            self.title(title)

        self.parent = parent

        self.result = None

        body = Frame(self)
        self.initial_focus = self.body(body)
        body.pack(padx=5, pady=5)

        self.buttonbox()

        self.grab_set()

        if not self.initial_focus:
            self.initial_focus = self

        self.protocol("WM_DELETE_WINDOW", self.cancel)

        self.geometry("+%d+%d" % (parent.winfo_rootx()+50,
                                  parent.winfo_rooty()+50))

        self.initial_focus.focus_set()

        self.wait_window(self)

    #
    # construction hooks

    def body(self, master):
        # create dialog body. return widget that should have
        # initial focus. this method should be overridden

        pass

    def buttonbox(self):
        # add standard button box. override if you don't want the
        # standard buttons

        box = Frame(self)

        w = Button(box, text="OK", width=10, command=self.ok, default=ACTIVE)
        w.pack(side=LEFT, padx=5, pady=5)
        w = Button(box, text="Cancel", width=10, command=self.cancel)
        w.pack(side=LEFT, padx=5, pady=5)

        self.bind("<Return>", self.ok)
        self.bind("<Escape>", self.cancel)

        box.pack()

    #
    # standard button semantics

    def ok(self, event=None):

        if not self.validate():
            self.initial_focus.focus_set() # put focus back
            return

        self.withdraw()
        self.update_idletasks()

        self.apply()

        self.cancel()

    def cancel(self, event=None):

        # put focus back to the parent window
        self.parent.focus_set()
        self.destroy()

    #
    # command hooks

    def validate(self):

        return 1 # override

    def apply(self):

        pass # override

The main trickery is done in the constructor; first, transient is used to associate this window with a parent window (usually the application window from which the dialog was launched). The dialog won’t show up as an icon in the window manager (it won’t appear in the task bar under Windows, for example), and if you iconify the parent window, the dialog will be hidden as well. Next, the constructor creates the dialog body, and then calls grab_set to make the dialog modal, geometry to position the dialog relative to the parent window, focus_set to move the keyboard focus to the appropriate widget (usually the widget returned by the body method), and finally wait_window.

Note that we use the protocol method to make sure an explicit close is treated as a cancel, and in the buttonbox method, we bind the Enter key to OK, and Escape to Cancel. The default=ACTIVE call marks the OK button as a default button in a platform specific way.

Using this class is much easier than figuring out how it’s implemented; just create the necessary widgets in the body method, and extract the result and carry out whatever you wish to do in the apply method. Here’s a simple example (we’ll take a closer look at the grid method in a moment).

Creating a simple dialog, revisited
import tkSimpleDialog

class MyDialog(tkSimpleDialog.Dialog):

    def body(self, master):

        Label(master, text="First:").grid(row=0)
        Label(master, text="Second:").grid(row=1)

        self.e1 = Entry(master)
        self.e2 = Entry(master)

        self.e1.grid(row=0, column=1)
        self.e2.grid(row=1, column=1)
        return self.e1 # initial focus

    def apply(self):
        first = int(self.e1.get())
        second = int(self.e2.get())
        print first, second # or something

And here’s the resulting dialog:

Running the dialog2.py script

Note that the body method may optionally return a widget that should receive focus when the dialog is displayed. If this is not relevant for your dialog, simply return None (or omit the return statement).

The above example did the actual processing in the apply method (okay, a more realistic example should probably to something with the result, rather than just printing it). But instead of doing the processing in the apply method, you can store the entered data in an instance attribute:

    ...

    def apply(self):
        first = int(self.e1.get())
        second = int(self.e2.get())
        self.result = first, second

d = MyDialog(root)
print d.result

Note that if the dialog is cancelled, the apply method is never called, and the result attribute is never set. The Dialog constructor sets this attribute to None, so you can simply test the result before doing any processing of it. If you wish to return data in other attributes, make sure to initialize them in the body method (or simply set result to 1 in the apply method, and test it before accessing the other attributes).

Grid Layouts

While the pack manager was convenient to use when we designed application windows, it may not be that easy to use for dialogs. A typical dialog may include a number of entry fields and check boxes, with corresponding labels that should be properly aligned. Consider the following simple example:

Simple Dialog Layout

To implement this using the pack manager, we could create a frame to hold the label “first:”, and the corresponding entry field, and use side=LEFT when packing them. Add a corresponding frame for the next line, and pack the frames and the checkbutton into an outer frame using side=TOP. Unfortunately, packing the labels in this fashion makes it impossible to get the entry fields lined up, and if we use side=RIGHT to pack the entry field instead, things break down if the entry fields have different width. By carefully using width options, padding, side and anchor packer options, etc., we can get reasonable results with some effort. But there’s a much easier way: use the grid manager instead.

This manager splits the master widget (typically a frame) into a 2-dimensional grid, or table. For each widget, you only have to specify where in this grid it should appear, and the grid managers takes care of the rest. The following body method shows how to get the above layout:

Using the grid geometry maanager
def body(self, master):

    Label(master, text="First:").grid(row=0, sticky=W)
    Label(master, text="Second:").grid(row=1, sticky=W)

    self.e1 = Entry(master)
    self.e2 = Entry(master)

    self.e1.grid(row=0, column=1)
    self.e2.grid(row=1, column=1)

    self.cb = Checkbutton(master, text="Hardcopy")
    self.cb.grid(row=2, columnspan=2, sticky=W)

For each widget that should be handled by the grid manager, you call the grid method with the row and column options, telling the manager where to put the widget. The topmost row, and the leftmost column, is numbered 0 (this is also the default). Here, the checkbutton is placed beneath the label and entry widgets, and the columnspan option is used to make it occupy more than one cell. Here’s the result:

Using the grid manager

If you look carefully, you’ll notice a small difference between this dialog, and the dialog shown by the dialog2.py script. Here, the labels are aligned to the left margin. If you compare the code, you’ll find that the only difference is an option called sticky.

When its time to display the frame widget, the grid geometry manager loops over all widgets, calculating a suitable width for each row, and a suitable height for each column. For any widget where the resulting cell turns out to be larger than the widget, the widget is centered by default. The sticky option is used to modify this behavior. By setting it to one of E, W, S, N, NW, NE, SE, or SW, you can align the widget to any side or corner of the cell. But you can also use this option to stretch the widget if necessary; if you set the option to E+W, the widget will be stretched to occupy the full width of the cell. And if you set it to E+W+N+S (or NW+SE, etc), the widget will be stretched in both directions. In practice, the sticky option replaces the fill, expand, and anchor options used by the pack manager.

The grid manager provides many other options allowing you to tune the look and behavior of the resulting layout. These include padx and pady which are used to add extra padding to widget cells, and many others. See the Grid Geometry Manager chapter for details.

Validating Data

What if the user types bogus data into the dialog? In our current example, the apply method will raise an exception if the contents of an entry field is not an integer. We could of course handle this with a try/except and a standard message box:

    ...

    def apply(self):
        try:
            first = int(self.e1.get())
            second = int(self.e2.get())
            dosomething((first, second))
        except ValueError:
            tkMessageBox.showwarning(
                "Bad input",
                "Illegal values, please try again"
            )

There’s a problem with this solution: the ok method has already removed the dialog from the screen when the apply method is called, and it will destroy it as soon as we return. This design is intentional; if we carry out some potentially lengthy processing in the apply method, it would be very confusing if the dialog wasn’t removed before we finished. The Dialog class already contain hooks for another solution: a separate validate method which is called before the dialog is removed.

In the following example, we simply moved the code from apply to validate, and changed it to store the result in an instance attribute. This is then used in the apply method to carry out the work.

    ...

    def validate(self):
        try:
            first= int(self.e1.get())
            second = int(self.e2.get())
            self.result = first, second
            return 1
        except ValueError:
            tkMessageBox.showwarning(
                "Bad input",
                "Illegal values, please try again"
            )
            return 0

    def apply(self):
        dosomething(self.result)

Note that if we left the processing to the calling program (as shown above), we don’t even have to implement the apply method.

 

A Django site. rendered by a django application. hosted by webfaction.

avanafil
купить диплом института
https://originality-diplomx24.com
купить свидетельство о браке
https://originality-diploms24.com
купить диплом фармацевта
https://originality-diploma24.com
купить диплом техникума
https://originality-diploman24.com
купить диплом
https://originality-diplomans24.com
купить аттестат за 9 класс
https://originality-diplomik24.com
купить аттестат за 11 класс
https://originality-diplomix24.com
купить аттестат за 11 класс
https://originality-diplomas24.com
купить диплом в москве
https://originality-diplomiks24.com
купить диплом ссср
https://originality-diplomiki24.com
купить аттестат за 9 класс
купить диплом колледжа
ru-diplomirovan.com
купить диплом
www.ru-diplomirovany.com
купить диплом автомеханика
ru-diplomirovanay.com
купить диплом колледжа
http://www.ru-diplomirovannie.com
купить диплом техникума
www.rudiplomir.com
купить диплом врача
https://rudiplomirs.com
купить диплом колледжа
https://rudiplomira.com
купить диплом университета
http://www.rudiplomiry.com
купить диплом института
https://rudiplomiru.com
купить диплом кандидата наук
https://diplom-msk24.ru
купить диплом ссср
http://www.rudik-attestats365.com
где купить диплом
купить диплом магистра
https://premialnie-diploms24.com
купить диплом ссср
www.premialnie-diplomy24.com
купить дипломы о высшем
http://www.premialnie-diplomas24.com
купить аттестат
http://www.premialnie-diploman24.com
купить аттестат за 9 класс
http://www.premialnie-diplomx24.com
купить диплом о среднем специальном
premialnie-diplomix24.com
купить диплом вуза
https://premialnie-diplomik24.com
купить диплом в москве
premialnie-diplomans24.com
купить диплом бакалавра
originality-diplomix.com
купить диплом в москве
https://russiany-diplomx.com
купить диплом кандидата наук
http://www.russiany-diplomix.com
купить аттестат
https://premialnie-diplomx.com
купить диплом колледжа
http://www.premialnie-diplomix.com
купить аттестат за 9 класс
http://www.diplomx-asx.com
купить аттестат за 11 класс
www.diplomix-asx.com купить диплом о среднем образовании цена
купить свидетельство о браке
можно ли купить диплом вуза
купить диплом бакалавра
https://premialnie-diplomansy.com/купить-диплом-института/
купить дипломы о высшем
https://premialnie-diplomansy.com/купить-диплом-колледжа/
купить диплом
https://russiany-diplomans.com/attestat-9-klassov
купить диплом
https://russiany-diplomans.com/kupit-diplom-tehnikuma
купить свидетельство о браке
https://russiany-diplomans.com/srednee-spetsialnoe-obrazovanie
купить аттестат за 11 класс
http://lands-diploms.com/attestat-11-klassov.html http://lands-diploms.com/specialnosti/yurist.html http://lands-diploms.com/goroda/novosibirsk.html http://lands-diploms.com/goroda/omsk.html http://lands-diploms.com/goroda/tula.html
купить диплом техникума
http://radiploma.com/kupit-diplom-s-reestrom http://radiploma.com/kupit-attestat-11-klassov http://radiploma.com/kupit-diplom-o-vysshem-obrazovanii http://radiploma.com/kupit-diplom-kosmetologa
купить диплом бакалавра
http://rudiplomisty24.com/диплом-техникума rudiplomisty24.com/диплом-специалиста-российского-вуза http://www.rudiplomisty24.com/купить-диплом-пермь http://rudiplomisty24.com/купить-диплом-воронеж
купить диплом фармацевта
купить аттестат за 9 класс
http://www.diploman-dok.com
купить диплом института
https://diploman-doks.com
купить диплом о среднем специальном
https://diploman-doky.com
купить свидетельство о рождении
diploman-doku.com
купить диплом автомеханика
https://diplomy-servise.com
купить диплом магистра
www.education-ua.com/kupit-legalnyij-diplom-v-ukraine.html
купить дипломы о высшем
http://education-ua.com/attestat-diplom.html
купить диплом о среднем специальном
http://education-ua.com/zaporozhe.html
купить диплом врача
http://www.education-ua.com/kieve.html
купить диплом автомеханика
http://education-ua.com/odesse.html
купить диплом техникума
education-ua.com/summah.html
купить аттестат
www.education-ua.com/ternopole.html
купить аттестат за 11 класс
www.education-ua.com/diplom-o-mediczinskom-obrazovanii.html
купить диплом о среднем образовании
http://education-ua.com/diplom-vyisshee.html
купить диплом колледжа
www.education-ua.com/kupit-nastoyashhij-diplom-goznak.html
купить диплом нового образца
http://www.education-ua.com/
купить аттестат за 11 класс
www.education-ua.com/diplom-texnikuma-kolledzha.html
купить диплом магистра
http://www.education-ua.com/diplom-magistra-ukrainskogo-vuza.html
купить диплом автомеханика
http://education-ua.com/diplom-o-mediczinskom-obrazovanii.html
купить диплом врача
http://www.education-ua.com/diplom-medsestry.html
купить диплом
www.education-ua.com/diplom-nedorogo.html
купить диплом автомеханика
www.education-ua.com/kupit-diplom-novogo-obrazca.html
где купить диплом
http://education-ua.com/otzivi-pogelania.html
купить диплом бакалавра
http://education-ua.com/diplom-vyisshee.html
купить свидетельство о рождении
http://www.education-ua.com/diplom-uchilishha.html
купить диплом о среднем образовании
http://education-ua.com/diplom-s-registracziej.html
купить дипломы о высшем
http://www.education-ua.com/kupit-diplom-s-provodkoj-v-ukraine.html
купить диплом университета
http://www.education-ua.com/diplom-specialista-ukrainskogo-vuza.html
купить диплом
http://www.education-ua.com/diplom-uchilishha.html
купить диплом фармацевта
www.education-ua.com/kupit-diplom-sssr-na-nastoyashhem-blanke.html
купить диплом нового образца
education-ua.com/svidetelstvo-o-rozhdenii.html
купить диплом автомеханика
http://education-ua.com/svidetelstvo-o-smerti.html
купить диплом о среднем образовании
http://education-ua.com/svidetelstvo-o-brake.html
купить дипломы о высшем
http://education-ua.com/svidetelstvo-o-razvode.html диплом купить купить аттестат купить диплом запорожье купить диплом киев купить диплом одесса купить диплом сумы купить диплом тернополь купить диплом врача купить диплом вуза купить диплом высшее купить диплом гознак купить диплом института купить диплом колледжа купить диплом магистра купить диплом медицинского училища купить диплом медсестры купить диплом недорого купить диплом нового образца купить диплом отзывы купить диплом о высшем образовании купить диплом о среднем образовании купить диплом с занесением в реестр купить диплом с проводкой купить диплом специалиста купить диплом средне специального образования купить диплом ссср купить свидетельство о рождении купить свидетельство о смерти купить свидетельство о браке купить свидетельство о разводе http://rudiplomisty24.com/аттестат-11-классов https://diplomy-servise.com http://dipplomy.com http://www.diplomansy.com/diplom-spetsialista diplomansy.com/diplom-magistra diplomansy.com/kupit-diplom-s-reestrom www.diplomansy.com/diplom-tekhnikuma-ili-kolledzha http://www.diplomansy.com/kupit-diplom-o-srednem-obrazovanii www.diplomansy.com/kupit-diplom-v-gorode https://diplomansy.com/kupit-diplom-ekaterinburg https://diplomansy.com/kupit-diplom-kazan https://diplomansy.com/kupit-diplom-volgograd diplomansy.com/diplom-o-vysshem-obrazovanii www.diplomansy.com/diplom-magistra www.diplomansy.com/kupit-diplom-o-srednem-obrazovanii https://diplomansy.com/attestat-za-11-klass www.diplomansy.com/kupit-diplom-v-gorode www.diplomansy.com/kupit-diplom-novosibirsk www.diplomansy.com/kupit-diplom-ekaterinburg https://diplomansy.com/kupit-diplom-omsk www.diplomansy.com/kupit-diplom-chelyabinsk https://diplomansy.com/kupit-diplom-volgograd eonline-diploma.com/kupit-diplom-o-vysshem-obrazovanii-oficialno https://eonline-diploma.com eonline-diploma.com/kupit-diplom.-otzyvy https://eonline-diploma.com/diplom-o-vysshem-obrazovanii-nizhnij-tagil www.eonline-diploma.com/diplom-o-vysshem-obrazovanii-v-tule
купить диплом вуза
http://http://egpu.ru/ http://http://vina-net.ru/ http://cursovik.ru/ http://http://spravkipiter.ru/ www.alcoself.ru school625.ru http://http://moek-college.ru/ mmcmedclinic.ru http://intimvisit.ru/ http://med-pravo.ru/ moskva-medcentr.ru http://intim-72.ru/ http://http://razigrushki.ru/ www.dgartschool.ru www.ftbteam.ru http://sb26.ru/ https://originaly-dokuments.com/attestaty/attestat-za-9-klass http://www.originaly-dokuments.com/diplom-o-srednem-spetsialnom-obrazovanii https://originaly-dokuments.com/gorod/nizhnij-tagil https://originaly-dokuments.com/gorod/vologda www.originaly-dokuments.com/gorod/saratov www.originaly-dokuments.com/spetsialnosti/yurist www.originaly-dokuments.com/spetsialnosti/povar http://www.originaly-dokuments.com/gorod/krasnodar www.originaly-dokuments.com/attestaty/attestat-za-11-klass http://www.originaly-dokuments.com/gorod/ekaterinburg http://www.originaly-dokuments.com/attestaty originaly-dokuments.com/spetsialnosti/bukhgalter originaly-dokuments.com/gorod/omsk http://www.originaly-dokuments.com/gorod/novosibirsk http://www.originaly-dokuments.com/gorod/sankt-peterburg www.originaly-dokuments.com/gorod/chelyabinsk www.originaly-dokuments.com/gorod/orjol http://www.originaly-dokuments.com/diplom-o-vysshem-obrazovanii/diplom-bakalavra https://originaly-dokuments.com/diplom-o-vysshem-obrazovanii/diplom-magistra http://www.originaly-dokuments.com/spetsialnosti/menedzher www.originaly-dokuments.com/diplom-o-srednem-spetsialnom-obrazovanii/diplom-kolledzha www.originaly-dokuments.com/diplom-o-srednem-spetsialnom-obrazovanii
купить диплом о среднем специальном
http://http://egpu.ru/ vina-net.ru cursovik.ru www.spravkipiter.ru http://http://alcoself.ru/ school625.ru http://http://moek-college.ru/ http://mmcmedclinic.ru/ intimvisit.ru http://med-pravo.ru/ www.moskva-medcentr.ru http://intim-72.ru/ http://http://razigrushki.ru/ www.dgartschool.ru http://http://ftbteam.ru/ http://http://sb26.ru/ https://originaly-dokuments.com/attestaty/attestat-za-9-klass originaly-dokuments.com/diplom-o-srednem-spetsialnom-obrazovanii originaly-dokuments.com/gorod/nizhnij-tagil http://www.originaly-dokuments.com/gorod/vologda originaly-dokuments.com/gorod/saratov originaly-dokuments.com/spetsialnosti/yurist http://www.originaly-dokuments.com/spetsialnosti/povar originaly-dokuments.com/gorod/krasnodar originaly-dokuments.com/attestaty/attestat-za-11-klass originaly-dokuments.com/gorod/ekaterinburg originaly-dokuments.com/attestaty www.originaly-dokuments.com/spetsialnosti/bukhgalter www.originaly-dokuments.com/gorod/omsk http://www.originaly-dokuments.com/gorod/novosibirsk originaly-dokuments.com/gorod/sankt-peterburg https://originaly-dokuments.com/gorod/chelyabinsk https://originaly-dokuments.com/gorod/orjol originaly-dokuments.com/diplom-o-vysshem-obrazovanii/diplom-bakalavra www.originaly-dokuments.com/diplom-o-vysshem-obrazovanii/diplom-magistra originaly-dokuments.com/spetsialnosti/menedzher www.originaly-dokuments.com/diplom-o-srednem-spetsialnom-obrazovanii/diplom-kolledzha https://originaly-dokuments.com/diplom-o-srednem-spetsialnom-obrazovanii
купить диплом врача
http://http://aurus-diploms.com/geography/kupit-diplom-v-toljatti.html lands-diploms.com www.lands-diploms.com aurus-diploms.com lands-diploms.com http://http://lands-diploms.com/goroda/samara.html http://aurus-diploms.com/geography/zarechnyj.html http://aurus-diploms.com/geography/kupit-diplom-v-saratove.html lands-diploms.com www.lands-diploms.com http://http://aurus-diploms.com/kupit-diplom-tehnika.html http://http://aurus-diploms.com/geography/kupit-diplom-v-cherepovce.html http://http://aurus-diploms.com/kupit-diplom-kosmetologa.html aurus-diploms.com http://http://aurus-diploms.com/geography/michurinsk.html http://aurus-diploms.com/geography/kupit-diplom-volzhskij.html www.lands-diploms.com http://http://aurus-diploms.com/geography/volsk.html http://aurus-diploms.com/kupit-diplom-santekhnika.html www.lands-diploms.com lands-diploms.com aurus-diploms.com http://aurus-diploms.com/geography/kupit-diplom-v-permi.html aurus-diploms.com http://lands-diploms.com/goroda/vladimir.html www.lands-diploms.com aurus-diploms.com http://http://aurus-diploms.com/kupit-diplom-svarshhika.html aurus-diploms.com http://http://lands-diploms.com/goroda/chita.html http://aurus-diploms.com/geography/kupit-diplom-v-novosibirske.html aurus-diploms.com http://http://aurus-diploms.com/geography/novoaltajsk.html http://lands-diploms.com/goroda/lipeck.html www.lands-diploms.com http://http://aurus-diploms.com/geography/kupit-diplom-v-kurske.html lands-diploms.com lands-diploms.com http://lands-diploms.com/goroda/voronezh.html http://aurus-diploms.com/geography/kupit-diplom-v-surgute.html http://lands-diploms.com/goroda/belgorod.html lands-diploms.com www.aurus-diploms.com www.lands-diploms.com lands-diploms.com http://lands-diploms.com/attestat-11-klassov.html http://aurus-diploms.com/kupit-diplom-biologa.html http://http://lands-diploms.com/goroda/yaroslavl.html http://lands-diploms.com/specialnosti/ekonomist.html www.lands-diploms.com www.lands-diploms.com www.lands-diploms.com http://aurus-diploms.com/geography/kupit-diplom-rostov-na-donu.html http://http://lands-diploms.com/goroda/barnaul.html aurus-diploms.com http://http://lands-diploms.com/goroda/kazan.html http://aurus-diploms.com/geography/kupit-diplom-v-saranske.html www.lands-diploms.com http://http://aurus-diploms.com/geography/sevastopol.html http://lands-diploms.com/goroda/balashiha.html lands-diploms.com http://http://aurus-diploms.com/geography/kupit-diplom-v-ivanovo.html www.lands-diploms.com http://http://aurus-diploms.com/geography/kupit-diplom-v-rjazani.html http://aurus-diploms.com/geography/diplom-v-tomske.html http://lands-diploms.com/goroda/irkutsk.html www.lands-diploms.com aurus-diploms.com http://http://lands-diploms.com/goroda/ryazan.html http://http://aurus-diploms.com/kupit-diplom-avtomehanika.html www.aurus-diploms.com www.aurus-diploms.com www.aurus-diploms.com www.lands-diploms.com купить диплом с занесением в реестр https://archive-diplom.com диплом купить с занесением в реестр москва куплю диплом техникума реестр archive-diploman.com купить диплом с внесением в реестр https://archive-diploms24.com archive-diplomy24.com www.diploms-ukraine.com http://http://diploms-ukraine.com/diplom-spetsialista diploms-ukraine.com diploms-ukraine.com diploms-ukraine.com http://http://diploms-ukraine.com/kupit-diplom-belaya-tserkov www.diploms-ukraine.com diploms-ukraine.com www.diploms-ukraine.com www.diploms-ukraine.com diploms-ukraine.com diploms-ukraine.com diploms-ukraine.com http://http://diploms-ukraine.com/kupit-diplom-nikolaev www.diploms-ukraine.com diploms-ukraine.com http://diploms-ukraine.com/kupit-diplom-ternopol http://http://diploms-ukraine.com/kupit-diplom-vuza www.diploms-ukraine.com http://diploms-ukraine.com/meditsinskij-diplom diploms-ukraine.com http://diploms-ukraine.com/svidetelstvo-o-razvode www.diploms-ukraine.com http://https://6landik-diploms.ru www.7arusak-diploms.ru www.8saksx-diploms.ru http://https://8arusak-diploms24.ru www.9saksx-diploms24.ru www.4russkiy365-diploms.ru www.5gruppa365-diploms.ru www.6rudik-diploms365.ru купить диплом училища купить диплом харьков купить диплом кривой рог купить диплом ужгород купить аттестат школы
купить аттестат
купить диплом в челябинске купить диплом в благовещенске купить диплом киев купить диплом в волгограде купить диплом кандидата наук купить диплом о высшем образовании реестр купить диплом провизора купить диплом университета купить диплом в туапсе купить диплом с занесением в реестр купить диплом педагога купить диплом альчевск купить диплом в черногорске купить диплом дизайнера купить диплом учителя купить диплом фельдшера купить диплом в набережных челнах купить диплом в старом осколе купить диплом в заречном купить диплом в ишимбае купить диплом в омске купить диплом в санкт-петербурге купить диплом в сургуте купить диплом кировоград купить диплом менеджера купить диплом в екатеринбурге купить диплом в саратове купить диплом в нижнем новгороде купить диплом инженера механика купить диплом в нижнем новгороде купить диплом тренера купить диплом ивано-франковск купить диплом в перми купить диплом в череповце купить диплом фитнес инструктора купить диплом в белогорске купить диплом в каменске-шахтинском купить диплом учителя купить свидетельство о разводе купить диплом в томске купить диплом специалиста купить диплом воспитателя купить диплом в воронеже купить диплом экономиста купить диплом энергетика купить диплом в буйнакске купить диплом медсестры купить диплом массажиста купить диплом кривой рог купить диплом в томске купить диплом бурильщика купить диплом механика купить диплом железнодорожника купить диплом менеджера купить диплом медсестры купить диплом с занесением в реестр купить диплом высшем образовании занесением реестр купить диплом училища купить диплом в нижним тагиле купить диплом в калуге купить диплом парикмахера купить диплом в минеральных водах купить диплом сварщика купить диплом в махачкале купить диплом с внесением в реестр купить диплом в архангельске купить диплом экономиста купить аттестат за классов купить диплом средне техническое купить диплом керчь купить диплом николаев купить диплом массажиста купить диплом штукатура купить диплом автомеханика купить диплом в ставрополе купить диплом хмельницкий купить диплом энергетика купить диплом в ярославле купить диплом в белгороде купить диплом сварщика купить свидетельство о рождении купить диплом в рязани купить диплом винница купить диплом в липецке купить диплом в туле купить диплом программиста купить диплом сантехника купить диплом в оренбурге купить диплом днепропетровск купить диплом в балашихе купить диплом в самаре купить диплом в ростове-на-дону купить диплом в серове купить диплом средне специального образования купить диплом фармацевта купить диплом в севастополе купить диплом полтава купить диплом биолога купить диплом в казани купить диплом в смоленске купить диплом в сочи купить диплом реестром москве купить диплом житомир купить диплом в чите купить диплом в краснодаре купить диплом александрия купить аттестат купить диплом в саранске купить диплом в курске https://premialnie-diplomansy.com/отзывы-клиентов/ premialnie-diplomansy.com http://https://premialnie-diplomansy.com/инженер-строитель/ https://originality-diploman.com/свидетельство-о-разводе originality-diploman.com http://https://originality-diploman.com/купить-диплом-юриста http://https://originality-diploman.com/купить-диплом-медсестры https://originality-diploman.com/купить-диплом-врача http://https://originality-diploman.com/купить-диплом-института-в-рф https://originality-diploman.com/купить-диплом-красноярск http://https://originality-diploman.com/купить-диплом-ссср premialnie-diplomansy.com www.originality-diploman.com http://https://premialnie-diplomansy.com/купить-диплом-пермь/ www.premialnie-diplomansy.com premialnie-diplomansy.com www.premialnie-diplomansy.com premialnie-diplomansy.com www.premialnie-diplomansy.com https://originality-diploman.com/купить-диплом-москва
купить диплом о среднем специальном
https://originality-diplomas.com/
купить аттестат
rudiplomista24.com
купить диплом о среднем образовании
www.lands-diplom.com
купить диплом университета
http://https://gosznac-diplom24.com/ aurus-diplom.com
купить диплом о среднем образовании
originality-diplomans.com
купить диплом врача
http://https://rudiplomis24.com/
купить аттестат за 9 класс
diploma-asx.com
купить дипломы о высшем
gosznac-diplom24.com www.aurus-diplom.com
купить свидетельство о рождении
originality-diplomas.com
купить диплом кандидата наук
https://rudiplomista24.com/
купить диплом ссср
www.diploma-asx.com
купить свидетельство о рождении
www.gosznac-diplom24.com www.diploman-doci.com
купить диплом фармацевта
originality-diplomans.com
где купить диплом
rudiplomista24.com
купить дипломы о высшем
diploma-asx.com
купить диплом колледжа
www.gosznac-diplom24.com www.diploman-doci.com
купить диплом техникума
http://diplomsagroups.com/kupit-diplom-v-gorode/bryansk.html https://diploma-asx.com/ www.originality-diploman24.com Купить диплом Екатеринбург radiploms.com https://radiplom.com/kupit-diplom-stomatologa radiplomy.com www.radiplomas.com https://frees-diplom.com/diplom-feldshera купить свидетельство о рождении Купить диплом СССР Купить диплом в Москве Купить диплом университета Купить диплом о среднем образовании bitcoin casinos for usa players www.russiany-diplomix.com www.russiany-diplomx.com http://https://russiany-diplomana.com/diplom-o-srednem-tehnicheskom-obrazovanii https://russiany-diploman.com/kupit-diplom-novosibirsk https://russiany-diplomany.com/kupit-diplom-farmatsevta http://https://russiany-diplomas.com/kupit-diplom-novosibirsk купить диплом о среднем образовании Купить аттестат 11 классов Купить диплом в казани Купить диплом Воронеж Купить аттестат 11 классов купить диплом в Красноярске rudiplomirovany.com www.rudiplomirovans.com http://http://rudiplomirovana.com/аттестат-11-классов www.rudiplomisty.com http://http://rudiplomis.com/купить-диплом-омск www.rudiplomista.com www.diploman-doci.com rudiplomista24.com http://http://rudiplomis24.com/диплом-колледжа http://rudiplomirovan.com/свидетельства-и-справки/свидетельство-о-разводе http://http://ru-diplomirovanie.com/купить-диплом-томск www.ru-diplomirovan.com Купить свидетельство о разводе Купить диплом Екатеринбург Купить диплом Екатеринбург Купить аттестат 11 классов Купить диплом в Краснодаре Купить диплом в СПБ Купить диплом строителя купить диплом в екатеринбурге Купить диплом Воронеж Купить диплом Москва Купить диплом техникума Купить диплом для иностранцев Купить диплом колледжа https://diploman-doci.com/diplom-kandidata-nauk lands-diplomy.com купить диплом университета купить аттестат https://ru-diplomirovans.com/аттестат-11-классов www.ru-diplomirovana.com ru-diplomirovany.com ru-diplomirovanay.com https://ru-diplomirovannie.com/купить-диплом-томск https://gosznac-diplomy.com/kupit-diplom-v-krasnodare Купить диплом с реестром Купить диплом Казань Купить диплом врача Купить диплом в СПБ Купить аттестат за 9 классов Купить диплом Екатеринбург www.diplomsagroups.com купить диплом в хабаровске deep nudify www.i-medic.com.ua http://https://renault-club.kiev.ua/germetik-dlya-avto-zahist-ta-doglyad-za-vashym-avtomobilem tehnoprice.in.ua http://https://lifeinvest.com.ua/kley-dlya-far https://warfare.com.ua/kupity-germetik-dlya-far-gid-pokuptsya www.05161.com.ua http://https://brightwallpapers.com.ua/butilovyy-germetik-dlya-far http://http://3dlevsha.com.ua/kupit-germetik-avtomobilnyy https://abank.com.ua/chernyy-germetik-dlya-far abshop.com.ua http://https://alicegood.com.ua/linzy-v-faru artflo.com.ua www.atlantic-club.com.ua http://https://atelierdesdelices.com.ua/sekrety-vyboru-idealnyh-led-linz-dlya-vashoho-avto www.510.com.ua www.autostill.com.ua https://autodoctor.com.ua/led-linzi-v-fari-de-kupiti-yak-vibrati-vstanoviti-dlya-krashchogo-osvitlennya-vashogo-avto http://babyphotostar.com.ua/linzi-v-fari-vibir-kupivlya-i-vstanovlennya https://bagit.com.ua/linzi-v-faru-vibir-kupivlya-i-vstanovlennya bagstore.com.ua befirst.com.ua https://bike-drive.com.ua/perevagi-led-far-chomu-varto-pereyti-na-novitnye-osvitlennya http://billiard-classic.com.ua/yak-vybraty-ta-kupyty-pnevmostepler-porady-ta-rekomendaciyi ch-z.com.ua www.bestpeople.com.ua www.daicond.com.ua delavore.com.ua https://jiraf.com.ua/stekla-far-yak-pokrashchyty-zovnishniy-vyglyad-vashogo-avto www.itware.com.ua http://http://logotypes.com.ua/osvitlennya-yak-klyuch-do-bezpeki-yak-vazhlyvi-linzi-dlya-far http://https://naduvnie-lodki.com.ua/jak-vibrati-idealni-stekla-far-dlya-vashogo-avto-poradi-vid-ekspertiv www.nagrevayka.com.ua http://https://repetitory.com.ua/chomu-yakisni-stekla-far-vazhlivi-dlya-vashogo-avtomobilya www.optimapharm.com.ua http://https://rockradio.com.ua/korpusy-dlya-far-vid-klasyky-do-suchasnykh-trendiv www.renenergy.com.ua shop4me.in.ua http://https://tops.net.ua/vibir-linz-dlya-far-osnovni-kriterii-ta-rekomendacii http://https://comfortdeluxe.com.ua/linzi-v-avtomobilnih-farah-vazhlivist-i-vpliv-na-yakist-osvitlennya www.companion.com.ua http://http://vlada.dp.ua/ekspluataciyni-harakteristiki-ta-znosostiikist-polikarbonatnih-ta-sklyanih-stekol-far www.tennis-club.kiev.ua metabo-partner.com.ua hr.com.ua www.dvernoyolimp.org.ua http://i-medic.com.ua/naykrashche-sklo-dlya-far-yak-obraty-dlya-vashogo-avto https://renault-club.kiev.ua/steklo-dlya-far-yak-obraty-vstanovyty-ta-doglyadat www.tehnoprice.in.ua https://lifeinvest.com.ua/yak-vybraty-korpus-fary-dlya-vashogo-avtomobilya-porady-ta-rekomendaciyi http://daicond.com.ua/yak-doglyadaty-za-sklom-dlya-far-porady-ta-sekrety 05161.com.ua http://https://brightwallpapers.com.ua/sklo-far-dlya-staryh-avtomobiliv-de-znayty-i-yak-pidibraty http://3dlevsha.com.ua/yak-bi-led-24v-linzi-pidvyshchuyut-bezpeku-na-dorozi-doslidzhennya-ta-fakty http://https://abank.com.ua/zamina-skla-far-na-mazda-6-gh-pokrokove-kerivnytstvo svetiteni.com.ua www.startupline.com.ua http://http://unasoft.com.ua/termostiikyy-kley-dlya-stekla-far-yak-vybraty-naykrashchyy-variant https://apartments.dp.ua/bi-led-24v-linzi-v-fary-yak-vony-pratsyuyut-i-chomu-vony-efektyvni www.sun-shop.com.ua http://https://ital-parts.com.ua/yak-vibraty-idealni-bi-led-linzi-24v-dlya-vashogo-avto-poradi-ta-rekomendatsiyi http://http://corpnews.com.ua/led-lampy-z-linzamy-innovatsiyi-u-sviti-avtomobilnogo-osvitlennya www.brides.com.ua www.grim.in.ua www.mega-m.com.ua www.hr.com.ua https://gazeta.sebastopol.ua/chomu-obraty-bi-led-linzy-3-dyuyma-dlya-vashogo-avto https://interpen.com.ua/bi-led-linzy-3-dyuyma-pokrashchennya-osvitlennya bookidoc.com.ua vps.com.ua https://dvernoyolimp.org.ua/linzy-dlya-far-porady-z-vyboru-ta-vstanovlennya www.interpen.com.ua fairspin blockchain casino 5 popular bitcoin casino blockchain online casino online australian casinos that accept neosurf gold ira companies – gold ira companies compared https://05161.com.ua/yak-pidvishchiti-bezpeku-na-dorozi-za-dopomogoyu-yakisnih-linz-u-farah https://cancer.com.ua/yak-vibrati-yakisne-sklo-korpus-ta-inshi-skladovi-dlya-far https://dvernoyolimp.org.ua/vidguki-pro-sklo-dlya-far-shcho-kazhut-koristuvachi https://smotri.com.ua/perevagi-ta-nedoliki-riznih-tipiv-led-linz https://05161.com.ua/materiali-korpusiv-far-shcho-obrati-dlya-vashogo-avto https://vps.com.ua/oglyad-novitnih-tehnologiy-u-virobnitstvi-skla-dlya-far https://diamond-gallery.in.ua/perevagi-zamini-skla-far-pokrashchennya-vidimosti-ta-bezpeki https://cancer.com.ua/vse-shcho-potribno-znati-pro-sklo-korpusi-ta-skladovi-fari-avtomobilya https://warfare.com.ua/vartist-bi-led-linz-shcho-vplivaie-na-cinu-i-yak-znayti-optimalniy-variant https://firma.com.ua/perevagi-kupivli-led-linz-pokrashchennya-osvitlennya-ta-stylyu https://slovakia.kiev.ua/poshireni-problemi-zi-sklom-far-ta-yih-virishennya https://eterna.in.ua/yak-vibrati-chaynik-dlya-himichnogo-poliruvannya-avtomobilnih-far-poradi-vid-ekspertiv https://geliosfireworks.com.ua/idealne-osvitlennya-yak-obrati-optimalni-bi-led-linzi https://eebc.net.ua/idealne-osvitlennya-yak-obrati-optimalni-bi-led-linzi https://omurp.org.ua/oglyad-populyarnih-brendiv-skla-ta-korpusiv-dlya-far https://vwclub.org.ua/novitni-tehnologiyi-osvitlennya-vibor-bi-led-linz-dlya-vashogo-avto https://thecrimea.org.ua/perevagi-vikoristannya-bi-led-linz-u-farah-avtomobilya https://510.com.ua/chomu-vazhlivo-zaminyuvati-poshkodzene-sklo-far-poradi-vid-ekspertiv https://lifeinvest.com.ua/oglyad-naykrashchih-bi-led-linz-u-2024-roci https://alicegood.com.ua/remont-far-zamina-skla-korpusu-ta-inshih-skladovih https://atelierdesdelices.com.ua/top-10-virobnikiv-skla-dlya-far-avtomobiliv-u-2024-roci https://atlantic-club.com.ua/yak-obrati-khoroshogo-ryepyetitora-z-angliyskoyi-movi-klyuchovi-aspyekti-viboru https://tehnoprice.in.ua/trivalist-zhittya-bi-led-linz-shcho-ochikuvati https://artflo.com.ua/yak-vibrati-naykrashche-sklo-dlya-far-vashogo-avtomobilya https://i-medic.com.ua/bi-led-linzi-tehnologiyi-maybutnogo-dlya-suchasnih-avtomobiliv https://renault-club.kiev.ua/yak-bi-led-linzi-pokrashuyut-vidimist-na-dorozi https://elektromotor.net.ua/butiloviy-germetik-dlya-far-vse-scho-vam-potribno-znati https://cpaday.com.ua/yak-zakhistiti-steklo-fari-vid-vologi-i-pilu-za-dopomogoyu-germetika https://ameli-studio.com.ua/vidguki-ta-reytingi-yakiy-germetik-dlya-far-varto-kupiti https://blooms.com.ua/perevagi-bi-led-linz-chomu-varto-pereyti-na-novi-tehnologiyi-osvitlennya https://dnmagazine.com.ua/yak-vibrati-naykrashchiy-germetik-dlya-far-vashogo-avtomobilya https://cocoshop.com.ua/novitni-rishennya-v-oblasti-stekol-dlya-far-yak-obrati-pravilno https://salle.com.ua/vidnovlennya-stekla-fari-vse-scho-vam-potribno-znati https://reklamist.com.ua/zahist-stekla-fari-avto-vid-pogodnih-umov-i-vplivu-vid-shlyahu https://synergize.com.ua/yak-obrati-bi-led-linzi-dlya-far-poradi-ekspertiv https://brandwatches.com.ua/germetik-dlya-far-navishcho-vin-potriben-i-yak-pravilno-vikoristovuvati https://abshop.com.ua/perevagi-yakisnogo-skla-korpusiv-ta-skladovih-far-dlya-vashogo-avto https://tyres.com.ua/yak-led-linzi-pokrashchuyut-vidimist-na-dorozi https://tm-marmelad.com.ua/perevagi-bi-led-linz-dlya-vashogo-avtomobilya-chomu-varto-pereyti-na-novu-tehnologiyu https://pravoslavnews.com.ua/top-5-stekol-dlya-far-avtomobilya-porivnyannya-i-vidguki https://salonsharm.com.ua/yak-zaminiti-steklo-fari-na-avtomobili-samostiyno-pokrokova-instruktsiya https://tayger.com.ua/perevagi-led-linz-chomu-varto-zrobiti-vibir-na-korist-novitnoyi-tehnologiyi
накрутка поведенческих факторов накрутка пф купить https://keepstyle.com.ua/kak-pravilno-ispolzovat-germetik-dlya-far-avto https://aurus-diploms.com/geography/kupit-diplom-v-nizhnem-tagile.html купить диплом в курске купить свидетельство о рождении купить диплом переводчика https://ru-diplomirovans.com/школьный-аттестат купить диплом в красноярске купить диплом о среднем специальном https://diploman-dok.com/kupit-diplom-habarovsk https://russiany-diplomans.com/diplom-sssr https://radiplomy.com/kupit-diplom-s-reestrom купить диплом института https://diplomix-asx.com/kupit-diplom-sssr https://rusd-diploms.com/diplom-medsestryi.html куплю диплом высшего образования https://try-kolduna.com.ua/where-to-buy-bilead-lens.html https://silvestry.com.ua/top-5-powerful-bilead.html http://apartments.dp.ua/optima-bilead-review.html http://companion.com.ua/laser-bilead-future.html http://slovakia.kiev.ua/h7-bilead-lens-guide.html https://join.com.ua/h4-bilead-lens-guide.html https://kfek.org.ua/focus2-bilead-install.html https://lift-load.com.ua/dual-chip-bilead-lens.html http://davinci-design.com.ua/bolt-mount-bilead.html http://funhost.org.ua/bilead-test-drive.html http://comfortdeluxe.com.ua/bilead-selection-criteria.html http://shopsecret.com.ua/bilead-principles.html https://firma.com.ua/bilead-lens-revolution.html http://sun-shop.com.ua/bilead-lens-price-comparison.html https://para-dise.com.ua/bilead-lens-guide.html https://geliosfireworks.com.ua/bilead-installation-guide.html https://tops.net.ua/bilead-buyers-guide.html https://degustator.net.ua/bilead-2024-review.html https://oncology.com.ua/bilead-2022-rating.html https://shop4me.in.ua/bestselling-bilead-2023.html https://crazy-professor.com.ua/aozoom-bilead-review.html http://reklama-sev.com.ua/angel-eyes-bilead.html http://gollos.com.ua/angel-eyes-bilead.html http://jokes.com.ua/ams-bilead-review.html https://greenap.com.ua/adaptive-bilead-future.html http://kvn-tehno.com.ua/3-inch-bilead-market-review.html https://salesup.in.ua/3-inch-bilead-lens-guide.html http://compromat.in.ua/2-5-inch-bilead-lens-guide.html http://vlada.dp.ua/24v-bilead-truck.html