我是否需要 DB 保留用户从 Tkinter GUI 输入的值?
Do i require DB to retain user-entered value from Tkinter GUI?
我正在使用一种 SEO 工具并尝试创建一个 GUI 应用程序,用户将在其中进入网站 link。然后,我的 list_of_url() 函数将执行以查找所有存在的 link。
```python
def ui_for_website():
app = Tk()
app.title("Scrapper")
app.geometry("300x300")
ui_text=StringVar(app,name="str")
ui_text_label=Label(app,text="Enter your website: ",font=('bold',12),pady=20)
ui_text_label.grid(row=0,column=0)
ui_text_entry=Entry(app,textvariable=ui_text)
ui_text_entry.grid(row=0,column=1)
#onclick=lambda : ui_text_entry.get()
ui_text_button=Button(app,text="Submit",command=lambda : onClick(ui_text_entry,app))
ui_text_button.grid(row=2,column=1)
ui_text=ui_text_entry.get()
print(ui_text)
app.mainloop()
```
这是我要求用户输入的 Tkinter UI 代码。
```python
def onClick(entry,app):
#global website_name
website_name=entry.get()
#print(website_name)
#app.quit()
return website_name
``
这是我的 onClick 方法,一旦用户单击“提交”按钮,它就会执行。
我正在尝试 return 值并将其存储在 website_name 变量中。
```python
def list_of_url():
url=ui_for_website()
print(url)
urls=session.get(url).html.absolute_links
tree = sitemap_tree_for_homepage(url)
#print(len(tree.all_pages()))
#print(len(tree.pages))
url_list=[]
for page in tree.all_pages():
if ('admin' not in page.url) and (page.url not in url_list):
url_list.append(page.url)
print(len(url_list))
return url_list
```
这个website_name,我在这个list_of_urls() 方法中访问它。但是有一次,tkinter 被关闭了。此变量的值变为空,我无法获取该值。
我得到的错误是
Traceback (most recent call last):
File "Indexing.py", line 89, in <module>
list_of_url()
File "Indexing.py", line 42, in list_of_url
urls=session.get(url).html.absolute_links
File "C:\Users\<username>\Anaconda3\lib\site-packages\requests\sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "C:\Users\<username>\Anaconda3\lib\site-packages\requests\sessions.py", line 519, in request
prep = self.prepare_request(req)
File "C:\Users\<username>\Anaconda3\lib\site-packages\requests\sessions.py", line 462, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
File "C:\Users\<username>\Anaconda3\lib\site-packages\requests\models.py", line 313, in prepare
self.prepare_url(url, params)
File "C:\Users\<username>\Anaconda3\lib\site-packages\requests\models.py", line 387, in prepare_url
raise MissingSchema(error)
requests.exceptions.MissingSchema: Invalid URL 'None': No schema supplied. Perhaps you meant http://None?
因此,这让我想到是否需要数据库来保留用户输入值。这样即使GUI被销毁或关闭。我会保留用户输入的值。
这是我的完整代码:
```python
from requests_html import HTMLSession
from tkinter import *
from usp.tree import sitemap_tree_for_homepage
session=HTMLSession()
#website_name=''
def onClick(entry,app):
#global website_name
website_name=entry.get()
print(website_name)
#app.quit()
return website_name
def ui_for_website():
app = Tk()
app.title("Scrapper")
app.geometry("300x300")
ui_text=StringVar(app,name="str")
ui_text_label=Label(app,text="Enter your website: ",font=('bold',12),pady=20)
ui_text_label.grid(row=0,column=0)
ui_text_entry=Entry(app,textvariable=ui_text)
ui_text_entry.grid(row=0,column=1)
#onclick=lambda : ui_text_entry.get()
ui_text_button=Button(app,text="Submit",command=lambda : onClick(ui_text_entry,app))
ui_text_button.grid(row=2,column=1)
ui_text=ui_text_entry.get()
print(ui_text)
app.mainloop()
def list_of_url():
url=ui_for_website()
print(url)
urls=session.get(url).html.absolute_links
tree = sitemap_tree_for_homepage(url)
#print(len(tree.all_pages()))
#print(len(tree.pages))
url_list=[]
for page in tree.all_pages():
if ('admin' not in page.url) and (page.url not in url_list):
url_list.append(page.url)
print(len(url_list))
return url_list
```
Tkinter 不需要连接到数据库。错误消息是关于 request
到 http。
更具体地说,它来自 requests
html 库。不涉及数据库。
我正在使用一种 SEO 工具并尝试创建一个 GUI 应用程序,用户将在其中进入网站 link。然后,我的 list_of_url() 函数将执行以查找所有存在的 link。
```python
def ui_for_website():
app = Tk()
app.title("Scrapper")
app.geometry("300x300")
ui_text=StringVar(app,name="str")
ui_text_label=Label(app,text="Enter your website: ",font=('bold',12),pady=20)
ui_text_label.grid(row=0,column=0)
ui_text_entry=Entry(app,textvariable=ui_text)
ui_text_entry.grid(row=0,column=1)
#onclick=lambda : ui_text_entry.get()
ui_text_button=Button(app,text="Submit",command=lambda : onClick(ui_text_entry,app))
ui_text_button.grid(row=2,column=1)
ui_text=ui_text_entry.get()
print(ui_text)
app.mainloop()
```
这是我要求用户输入的 Tkinter UI 代码。
```python
def onClick(entry,app):
#global website_name
website_name=entry.get()
#print(website_name)
#app.quit()
return website_name
``
这是我的 onClick 方法,一旦用户单击“提交”按钮,它就会执行。 我正在尝试 return 值并将其存储在 website_name 变量中。
```python
def list_of_url():
url=ui_for_website()
print(url)
urls=session.get(url).html.absolute_links
tree = sitemap_tree_for_homepage(url)
#print(len(tree.all_pages()))
#print(len(tree.pages))
url_list=[]
for page in tree.all_pages():
if ('admin' not in page.url) and (page.url not in url_list):
url_list.append(page.url)
print(len(url_list))
return url_list
```
这个website_name,我在这个list_of_urls() 方法中访问它。但是有一次,tkinter 被关闭了。此变量的值变为空,我无法获取该值。
我得到的错误是
Traceback (most recent call last):
File "Indexing.py", line 89, in <module>
list_of_url()
File "Indexing.py", line 42, in list_of_url
urls=session.get(url).html.absolute_links
File "C:\Users\<username>\Anaconda3\lib\site-packages\requests\sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "C:\Users\<username>\Anaconda3\lib\site-packages\requests\sessions.py", line 519, in request
prep = self.prepare_request(req)
File "C:\Users\<username>\Anaconda3\lib\site-packages\requests\sessions.py", line 462, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
File "C:\Users\<username>\Anaconda3\lib\site-packages\requests\models.py", line 313, in prepare
self.prepare_url(url, params)
File "C:\Users\<username>\Anaconda3\lib\site-packages\requests\models.py", line 387, in prepare_url
raise MissingSchema(error)
requests.exceptions.MissingSchema: Invalid URL 'None': No schema supplied. Perhaps you meant http://None?
因此,这让我想到是否需要数据库来保留用户输入值。这样即使GUI被销毁或关闭。我会保留用户输入的值。
这是我的完整代码:
```python
from requests_html import HTMLSession
from tkinter import *
from usp.tree import sitemap_tree_for_homepage
session=HTMLSession()
#website_name=''
def onClick(entry,app):
#global website_name
website_name=entry.get()
print(website_name)
#app.quit()
return website_name
def ui_for_website():
app = Tk()
app.title("Scrapper")
app.geometry("300x300")
ui_text=StringVar(app,name="str")
ui_text_label=Label(app,text="Enter your website: ",font=('bold',12),pady=20)
ui_text_label.grid(row=0,column=0)
ui_text_entry=Entry(app,textvariable=ui_text)
ui_text_entry.grid(row=0,column=1)
#onclick=lambda : ui_text_entry.get()
ui_text_button=Button(app,text="Submit",command=lambda : onClick(ui_text_entry,app))
ui_text_button.grid(row=2,column=1)
ui_text=ui_text_entry.get()
print(ui_text)
app.mainloop()
def list_of_url():
url=ui_for_website()
print(url)
urls=session.get(url).html.absolute_links
tree = sitemap_tree_for_homepage(url)
#print(len(tree.all_pages()))
#print(len(tree.pages))
url_list=[]
for page in tree.all_pages():
if ('admin' not in page.url) and (page.url not in url_list):
url_list.append(page.url)
print(len(url_list))
return url_list
```
Tkinter 不需要连接到数据库。错误消息是关于 request
到 http。
更具体地说,它来自 requests
html 库。不涉及数据库。