Вопрос задан 18.01.2020 в 12:14. Предмет Информатика. Спрашивает Стадничук Алексей.

ВНИМАНИЕ!!! Знатоки Питона!!! Как в модуле Tkinter удалить все виджеты, кроме одного с помощью

команды canvas.delete("..."). Например, удалить всё, кроме виджета Block? Нужен код.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Менщикова Лера.

Ответ:

from tkinter import *

root=Tk()

btn=Button(text="button")

btn1=Button(text="button1")

bt2n=Button(text="button2")

block=Button(text="Block")

#создаем виджеты

widjets=[btn,btn1,btn2]

# удаляем виджеты кроме block

for i in widjets:

   i.destroy()

root.mainloop()

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для удаления всех виджетов, кроме одного, из модуля tkinter с помощью команды `canvas.delete`, можно следовать следующему подходу:

1. Создайте экземпляр класса `tkinter.Canvas()`, который будет представлять область, в которой размещены виджеты.

```python canvas = tkinter.Canvas(root) canvas.pack() ```

2. Создайте виджеты, которые нужно удалить, например, белый прямоугольник и красная кнопка:

```python block = canvas.create_rectangle(50, 50, 150, 150, fill="white") button = tkinter.Button(root, text="Удалить все", command=delete_widgets) button.pack() ```

3. Напишите функцию `delete_widgets()`, которая будет удалять все виджеты, кроме виджета `block`:

```python def delete_widgets(): for widget in canvas.winfo_children(): if widget != block: widget.destroy() ```

Эта функция проходит по всем дочерним виджетам `canvas` с помощью метода `winfo_children()`. Если виджет не равен `block`, то он удаляется с помощью метода `destroy()`.

4. Запустите приложение с помощью метода `mainloop()`.

```python root.mainloop() ```

Полный код будет выглядеть следующим образом:

```python import tkinter

def delete_widgets(): for widget in canvas.winfo_children(): if widget != block: widget.destroy()

root = tkinter.Tk()

canvas = tkinter.Canvas(root) canvas.pack()

block = canvas.create_rectangle(50, 50, 150, 150, fill="white") button = tkinter.Button(root, text="Удалить все", command=delete_widgets) button.pack()

root.mainloop() ```

При нажатии на кнопку "Удалить все" будут удалены все виджеты, кроме прямоугольника `block`.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос