Skip to content

Commit f8a5f5a

Browse files
committed
new examples 2019.10.13
1 parent de5c0e0 commit f8a5f5a

File tree

4 files changed

+183
-0
lines changed
  • __scraping__/vanglaini.org - requests - BS
  • string/join-to-string
  • tkinter

4 files changed

+183
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/env python3
2+
3+
# date: 2019.10.12
4+
5+
import requests
6+
from bs4 import BeautifulSoup
7+
import pandas as pd
8+
9+
response = requests.get('https://www.vanglaini.org/')
10+
soup = BeautifulSoup(response.text, 'lxml')
11+
12+
data = []
13+
14+
for article in soup.find_all('article'):
15+
if article.a is None:
16+
continue
17+
row = [
18+
article.a.text.strip(), # headline
19+
article.p.text.strip(), # summary
20+
"https://www.vanglaini.org" + article.a['href'] # link
21+
]
22+
data.append(row)
23+
24+
df = pd.DataFrame(data, columns=['Headline', 'Summary', 'Link'])
25+
print(df)

string/join-to-string/main.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
def to_string(my_list, sep=', '):
2+
3+
string = ''
4+
5+
for char in my_list:
6+
if string:
7+
string = string + sep
8+
string = string + char
9+
10+
return string
11+
12+
my_list = ['H','E','L','p']
13+
print(to_string(my_list, '-'))
14+
print(to_string(['a'], '-'))
15+
print(to_string([], '-'))
16+
17+
def to_string(my_list, sep=', '):
18+
19+
if not my_list:
20+
return ''
21+
22+
string = my_list[0]
23+
24+
for char in my_list[1:]:
25+
string = string + sep + char
26+
27+
return string
28+
29+
my_list = ['H','E','L','p']
30+
print(to_string(my_list, '-'))
31+
print(to_string(['a'], '-'))
32+
print(to_string([], '-'))

tkinter/pages/other-example/main.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#!/usr/bin/env python3
2+
3+
# date: 2019.10.12
4+
5+
import tkinter as tk
6+
7+
class Main(tk.Tk):
8+
9+
def __init__(self, *args, **kwargs):
10+
super().__init__(*args, **kwargs)
11+
12+
self.shared_data ={
13+
"email": tk.StringVar(),
14+
"password": tk.StringVar()
15+
}
16+
17+
self.frames = {
18+
'StartPage': StartPage(self, self),
19+
'PageTwo': PageTwo(self, self),
20+
}
21+
22+
self.current_frame = None
23+
self.show_frame('StartPage')
24+
25+
def show_frame(self, name):
26+
if self.current_frame:
27+
self.current_frame.forget()
28+
self.current_frame = self.frames[name]
29+
self.current_frame.update_widgets()
30+
self.current_frame.pack()
31+
32+
class BasePage(tk.Frame):
33+
def __init__(self, parent, controller):
34+
super().__init__(parent)
35+
self.controller = controller
36+
self.create_widgets()
37+
38+
def create_widgets(self):
39+
pass
40+
41+
def update_widgets(self):
42+
pass
43+
44+
class StartPage(BasePage):
45+
46+
def create_widgets(self):
47+
self.entry1 = tk.Entry(self, textvariable=self.controller.shared_data["email"])
48+
self.entry1.pack()
49+
self.entry2 = tk.Entry(self, show='*')
50+
self.entry2.pack()
51+
button = tk.Button(self, text="Submit", command=lambda:self.controller.show_frame("PageTwo"))
52+
button.pack()
53+
54+
class PageTwo(BasePage):
55+
56+
def create_widgets(self):
57+
self.label = tk.Label(self, text="")
58+
self.label.pack()
59+
60+
button = tk.Button(self, text="Back", command=lambda:self.controller.show_frame("StartPage"))
61+
button.pack()
62+
63+
def update_widgets(self):
64+
self.label["text"] = "Welcome, {}".format(self.controller.shared_data["email"].get())
65+
66+
67+
if __name__ == "__main__":
68+
win = Main()
69+
win.mainloop()
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
2+
# date: 2019.10.13
3+
# https://stackoverflow.com/questions/58358089/how-to-create-ui-that-shows-a-hierarchy
4+
5+
import tkinter as tk
6+
from tkinter import ttk
7+
8+
# --- functions ---
9+
10+
def rename(event=None): # `event` to get argument from double click
11+
top = tk.Toplevel()
12+
name_entry = tk.Entry(top)
13+
name_entry.pack()
14+
15+
def on_enter(event):
16+
selected = tree.selection()[0]
17+
print(selected)
18+
print(tree.item(selected)['text'], name_entry.get())
19+
#tree.item(selected)['text'] = name_entry.get()
20+
tree.item(selected, text=name_entry.get())
21+
print(tree.item(selected)['text'], name_entry.get())
22+
top.destroy()
23+
24+
name_entry.bind('<Return>', on_enter)
25+
26+
def add():
27+
top = tk.Toplevel()
28+
tk.Label(top, text="Name").pack()
29+
name_entry = tk.Entry(top)
30+
name_entry.pack()
31+
32+
def on_OK():
33+
item = tree.insert(tree.selection(), "end", text=name_entry.get())
34+
tree.item(item, tag=item) # add tag to bind mouse click
35+
tree.tag_bind(item, '<Double-Button-1>', rename) # rename on double click
36+
top.destroy()
37+
38+
tk.Button(top, text="OK", command=on_OK).pack(fill='x')
39+
tk.Button(top, text="Cancel", command=quit).pack(fill='x')
40+
41+
def delete():
42+
if tree.selection():
43+
tree.delete(tree.selection())
44+
45+
# --- main ---
46+
47+
my_app = tk.Tk()
48+
49+
tk.Button(my_app,text="add", command=add).pack(fill='x')
50+
tk.Button(my_app,text="delete", command=delete).pack(fill='x')
51+
tk.Button(my_app,text="rename", command=rename).pack(fill='x')
52+
53+
tree = ttk.Treeview(my_app)
54+
tree.column("#0", width=270, minwidth=270)
55+
tree.pack(side='top', fill='x')
56+
57+
my_app.mainloop()

0 commit comments

Comments
 (0)