在同一个类中使用不同的函数时,如何在Python中获取Checkbox的值

时间:2019-05-11 08:38:27

标签: python checkbox tkinter

我正在开发一个程序,其中将从实时HTML页面中提取特定元素,并在GUI中向用户显示,然后在用户选择时将它们打印在HTML文档中。我能够执行大多数操作,需要帮​​助的一个小问题。在下面显示的代码中,我从网站中提取了一个标题,并使用Checkbox功能在GUI中显示该标题,如果用户勾选了复选框,则应将其打印在HTML文档中。但是,无论该复选框处于选中状态还是未选中状态,其值始终保持为“ False”,并且我无法继续进行代码处理。您能指出问题出在哪里吗?我实现了save_function只是为了检查Checkbox的值,它始终为“ 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 个答案:

答案 0 :(得分:1)

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

根据经验,切勿创建两个Tk实例。您需要将对Tk的第二次呼叫替换为对Toplevel的呼叫。