我正在开发一个程序,其中要从实时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
。