Python GTK: Как сделать так, чтобы флажок определял, откроется окно или нет

#python #linux #terminal #gtk

#python #linux #терминал #gtk

Вопрос:

В моей программе у меня есть одно из тех раздражающих всплывающих окон, которое предупреждает пользователя о необходимости проверить настройки. У меня есть флажок, который, если он установлен, должен никогда больше не показывать всплывающее окно. Я понятия не имею, как это сделать. Когда флажок установлен, мне нужно, чтобы программа записывала в текстовый файл с именем tog_file.txt говоря «верно». И если текст в tog_file.txt если это правда, всплывающее окно больше никогда не будет отображаться. Код:

 def reminder():
    global tog
    tog = open("tog_file.txt", "r b")
    tog_r = tog.read()
    if tog_r == "true":
        print "true"
    if tog_r == "":
        global reminder
        reminder = gtk.Window(gtk.WINDOW_TOPLEVEL)
        reminder.set_position(gtk.WIN_POS_CENTER)
        reminder.set_size_request(450, 205)
        reminder.set_title("Info")

        textbox = gtk.Label("Remember To Go Into The Settings Menu! There are Important Settings that Need to be Reviewed by you!")
        textbox.set_justify(gtk.JUSTIFY_CENTER) 
        textbox.set_line_wrap(True)   

        button = gtk.Button("Close")
        button.connect("clicked", reminder_close)

        toggle = gtk.CheckButton("Don't Show This Message Again")
        item_text = toggle.get_active()
        if item_text == False:
            print "no"
        if item_text == True:
            print "yea"
            tog.write("true")

        fixed = gtk.Fixed()
        fixed.put(button, 300, 160)
        fixed.put(toggle, 50, 165)
        fixed.put(textbox, 50, 50)

        reminder.add(fixed)
        reminder.show_all()

def reminder_close(self):
    reminder.destroy()
  

Если вам нужна дополнительная информация, просто оставьте комментарий.
Спасибо StackOverflow 🙂

Комментарии:

1. если os.path.exists(‘file-path’): с open(‘file-path’,’r’) как f: если f.read() == ‘true’: пропустить всплывающее окно else: показать всплывающее окно

2. @cox не могли бы вы опубликовать ответ вместо комментария, чтобы я мог сказать, что вы ответили на вопрос, и поэтому я могу понять ваш ответ, пожалуйста

3. @cox это даже близко не то, что я ищу. Мне нужно иметь возможность указывать, когда писать «true» в файле с помощью toggle.get_active()

Ответ №1:

Я думаю, вам нужен метод get_active() . Проверьте, есть ли button.get_active() => boolean и действуйте соответственно. Вы также можете подключить радио bt к сигналу ‘toggle’ и в функции on_toggle установить переменную класса с состоянием bt: if bt.get_active():self.ischeck=True
else:self.ischeck = False
или сокращенным способом: self.ischeck = True if bt.get_active() else False