Код Tkinter для отображения всплывающего окна на моей текущей странице, но он показывает значок на панели задач, пока я кликаю, затем - PullRequest
0 голосов
/ 08 января 2020

Это моя django страница администрирования. Я собираюсь выбрать правила добавления или удаления в клиенте, затем нажимаю go, чтобы отобразить всплывающее окно tkinter на моей текущей странице, но на панели задач отображается значок, пока я ' м, кликнув на то только окно отображения

class ArticleAdmin(admin.ModelAdmin):
    list_display = ['rule_id','item_typ', 'rule_desc']
    actions = ['create_rule_client_relation', 'delete_rule_client_relation']
    search_fields = ['item_typ']

    def get_actions(self, request):
        actions = super().get_actions(request)
        if 'delete_selected' in actions:
            del actions['delete_selected']
        return actions

    def create_rule_client_relation(self, request, queryset):
        root = tk.Tk()
        root.title("Hey Buddy")
        mainframe = Frame(root)
        mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
        mainframe.columnconfigure(0, weight=1)
        mainframe.rowconfigure(0, weight=1)
        mainframe.pack(pady=100, padx=100)
#         tkvar = StringVar(root)
        tkvar = StringVar(root)
        client_list = client_informatn.objects.all().values_list('client_name',flat=True)
        tkvar.set(client_list[0])
        popupMenu = OptionMenu(mainframe, tkvar, *client_list)
        Label(mainframe, text="Choose a client").grid(row=1, column=1)
        popupMenu.grid(row=2, column=1)
        def change_dropdown(*args):
            global client_name
            client_name = tkvar.get()
            root.destroy()
        button = Button(root, text="OK", command=change_dropdown)
        button.pack()
        root.mainloop()
        client_id = client_informatn.objects.filter(client_name=client_name).values_list('client_id', flat=True)[0]
        rows_updated = 0
        row_already_found = 0
        for rule_id in queryset.values_list('rule_id', flat=True):
            if not crt_rule_client_relation.objects.filter(client_id=client_id, rule_id = rule_id).exists():
                crt_rule_client_relation.objects.create(rule_id=rule_id, client_id=client_id)
                rows_updated += 1
            else:
                row_already_found += 1
        if rows_updated == 1:
            message_bit = "1 rule was"
        else:
            message_bit = "%s rule were" % rows_updated
        if row_already_found == 0:
            self.message_user(request, "%s successfully added to the client." % message_bit)
        else:
            self.message_user(request, "{message_bit} successfully added to the client and {row_already_found} was already present".format(message_bit=message_bit,row_already_found=row_already_found))

    def delete_rule_client_relation(self, request, queryset):
        root = tk.Tk()
        root.title("Hey Buddy!!!")
        mainframe = Frame(root)
        mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
        mainframe.columnconfigure(0, weight=1)
        mainframe.rowconfigure(0, weight=1)
        mainframe.pack(pady=100, padx=100)
        tkvar = StringVar(root)
        client_list = client_informatn.objects.all().values_list('client_name', flat=True)
        tkvar.set(client_list[0])
        popupMenu = OptionMenu(mainframe, tkvar, *client_list)
        Label(mainframe, text="Choose a client").grid(row=1, column=1)
        popupMenu.grid(row=2, column=1)

        def change_dropdown(*args):
            global client_name
            client_name = tkvar.get()
            root.destroy()
        button = Button(root, text="OK", command=change_dropdown)
        button.pack()
        root.mainloop()
        client_id = client_informatn.objects.filter(client_name=client_name).values_list('client_id', flat=True)[0]
        rows_deleted = 0
        row_not_found = 0
        for rule_id in queryset.values_list('rule_id', flat=True):
            if crt_rule_client_relation.objects.filter(client_id=client_id, rule_id=rule_id).exists():
                crt_rule_client_relation.objects.filter(rule_id=rule_id, client_id=client_id).delete()
                rows_deleted += 1
            else:
                row_not_found += 1
        if rows_deleted <= 1:
            message_bit = "%s rule was" % rows_deleted
        else:
            message_bit = "%s rule were" % rows_deleted
        if row_not_found == 0:
            self.message_user(
                request, "%s successfully deleted from the client." % message_bit)
        else:
            self.message_user(request, "{message_bit} successfully deleted to the client and {row_not_found} was not present".format(
                message_bit=message_bit, row_not_found=row_not_found))


    create_rule_client_relation.short_description = "Add rules to the client"
    delete_rule_client_relation.short_description = "Delete rules from the client"


admin.site.register(crt_rules_master, ArticleAdmin)
...