Как получить значение Checkbox в Python при работе с разными функциями в одном классе - PullRequest
0 голосов
/ 11 мая 2019

Я разрабатываю программу, в которой определенные элементы должны быть извлечены из живых HTML-страниц, показаны пользователю в графическом интерфейсе, а затем по выбору пользователя они должны быть напечатаны в HTML-документе.Я в состоянии выполнить большинство из них, нужна помощь с небольшой проблемой.В представленном ниже коде я извлек один заголовок с веб-сайта и использовал функцию флажка для отображения этого в графическом интерфейсе. Если флажок установлен пользователем, он должен быть напечатан в HTML-документе.Однако значение флажка всегда остается «ложным», независимо от того, установлено оно или нет, и я не могу продолжить работу с кодом.Подскажите, пожалуйста, где проблема?Я реализовал функцию save_ только для проверки значения флажка, и он всегда "False".

class Application(Frame):
    def __init__(self, master):
        Frame.__init__(self, master)
        self.gui()

    def game_function(self):
        game = Tk()
        game.geometry('600x400')
        game.title('Upcoming Video Game Releases')
        game.resizable(0,0)

        if self.check.get() == 0:

            self.check_g_1 = BooleanVar()

            url = "https://www.metacritic.com/browse/games/release-date/coming-soon/all/date"
            user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
            request = urllib.request.Request(url,headers={'User-Agent': user_agent})
            response = urllib.request.urlopen(request)
            encoding = response.info().get_param('charset', 'utf8')
            html = response.read().decode(encoding)

            date_title_1 = re.findall('<span>(.*?)</span>',html,re.DOTALL)[1]
            title_1 = re.findall('<h3>(.*?)</h3>',html,re.DOTALL)[0]
            title1_subtitle = Checkbutton(game, text = title_1.lstrip(), fg='black', font = ('Arial', 12), justify=LEFT, variable=self.check_g_1)
            title1_subtitle.place(relx=0, rely=0)
            date_1 = Label(game, text = date_title_1.lstrip(), fg='black', font = ('Arial', 12))
            date_1.place(relx=0.6, rely=0)

       else:
            print("FFF")

       save_button = Button(game, text = 'Save', font = ('Arial', 14), fg='black', bg='white', relief = 'solid', command=self.save_function)
       save_button.place(relx=0.38, rely=0.72, height=60, width=200)
       save_button.configure(wraplength='200')

    def save_function(self):
        print(self.check_g_1.get())

Меня интересует значение self.check_g_1

1 Ответ

1 голос
/ 11 мая 2019

Ваша проблема в том, что вы создаете переменную в одном экземпляре tkinter и пытаетесь использовать ее в другом.Экземпляры Tk не могут совместно использовать виджеты или переменные.

Как правило, никогда не следует создавать два экземпляра Tk.Вам необходимо заменить второй звонок на Tk звонком на Toplevel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...