在同一类中使用不同功能时,如何在Python中获得复选框的值



我正在开发一个程序,其中要从实时HTML页面中提取特定元素,在GUI中显示给用户,然后在选择用户的选择中,将打印它们在HTML文档中。我能够执行大多数,需要一个小问题的帮助。在下面介绍的代码中,我从网站提取了一个标题,并使用了复选框函数在GUI中显示此标题,如果用户勾选了复选框,则应在HTML文档中打印出来。但是,复选框的值始终保持"错误",无论是检查还是未选中,我都无法进一步进行代码。您能突出显示问题在哪里吗?我只是为了检查复选框的值而实现了save_function,它始终是" 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

您的问题是您正在一个tkinter实例中创建变量,并尝试在另一个tkinter实例中使用它。Tk的实例无法共享小部件或变量。

作为经验法则,您绝不应该创建两个Tk实例。您需要用Toplevel的呼叫将第二个呼叫替换为Tk

最新更新