Squeak.ru - шаблоны программирования

Могу ли я использовать tk.Checkbutton для добавления переменных в кортеж?

У меня есть скрипт python для удаления файлов по расширению (т.е. удаление всех файлов, которые заканчиваются на .com, .html и т. д.). В настоящее время у меня есть кортеж, и пользователь должен закомментировать или удалить файлы, которые он или она не хочет удалять. Например, если они хотят сохранить .com файлов, они должны закомментировать их в моем сценарии. Я хотел бы создать графический интерфейс с tkinter, который позволяет пользователю проверять, какие расширения они хотят удалить.

Моя цель — поместить проверяемые переменные в кортеж, где я могу использовать команду .endswith() для os.remove() файлов, которые заканчиваются расширениями, указанными в кортеже.

Без графического интерфейса это легко сделать, так как я просто определяю свой кортеж в серии str строк. Я мог бы просто сказать:

Files_to_Delete = (".com", ".html")

Но при попытке использовать tk.Checkbutton() я получаю сообщение об ошибке:

кортеж для endwith должен содержать только строку str, а не StringVar

Я думаю, что у меня есть мозги, как решить эту проблему. Моя кнопка определяется, как показано ниже:

V1 = tk.StringVar()
c1=tk.Checkbutton(root, text=".com", variable=V1, onvalue=".com")

Ответы:


1

Переменные tkinter должны вызывать свой метод .get(), если вы хотите узнать, какое значение было установлено. Вот пример, с которым можно повозиться. Я предпочитаю, чтобы GUI были сделаны с помощью ООП, и я надеюсь, что это вас не смущает.

import tkinter as tk


class OOP:
    def __init__(self):
        self.win = tk.Tk()
        self.com = tk.StringVar()
        self.create_widgets()

    def print_value(self):
        print(self.com)
        print(self.com.get())

    def create_widgets(self):
        tk.Checkbutton(self.win, text=".com", variable=self.com, onvalue=".com").pack()
        tk.Button(self.win, text="Print value", command=self.print_value).pack()


app = OOP()
app.win.mainloop()

Вы также можете вызвать V1.set(".com") (в моем примере self.com.set()), если хотите инициализировать переменную некоторым значением или просто изменить ее значение во время выполнения! Этот пример показывает, что если вы опустите .get(), вы получите какой-то странный вывод, например «PY_VAR0», вместо фактического значения контрольной кнопки.

06.02.2019
  • Хммм... Я изменил определение кортежа с Files_to_Delete = (V1, V2) на Files_to_Delete = (V1.get()), V2.get()), думая, что это блестяще! Когда я запустил свой скрипт, он просто очистил всю папку, а не только файлы с расширениями, определенными кнопкой tk.Checkbutton. Может быть, я не совсем понимаю, как str-ify мои переменные tk.Checkbutton.... РЕДАКТИРОВАТЬ: после публикации я увидел, что ваше сообщение обновлено с примером ООП. К сожалению, уже поздно, и я должен уйти с работы, но я проверю это первым делом утром! 07.02.2019
  • @K.Hess звучит хорошо! Когда я запустил код, он вывел .com или 0 на терминал, но вы также можете настроить выходные данные. Вы можете даже захотеть tk.BooleranVar() в зависимости от ситуации. 07.02.2019
  • После возни, это действительно работает! Теперь я сам начал использовать ООП. Спасибо! 07.02.2019
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...