作为 PySimplegui 退出屏幕的数据?

As data for PySimplegui exit screen?

这个 def 是我的脚本,用于扫描网站的活动链接。在这种情况下,我想知道如何获取这些数据并将其放在 Pysimplegui OUTPUT 屏幕上。

import PySimpleGUI as sg
import requests
from bs4 import BeautifulSoup
import re

sg.theme( 'Reddit' )


def prog() :
    r = requests.get( 'http://www.google.com' )
    html = r.text
    soup = BeautifulSoup( html , 'lxml' )

    links = soup.find_all( 'a' , attrs={'href' : re.compile( '^http://)' )} )
    for link in links :
        href = link['href']
        return href


        layout = [
[sg.Output( size=(30 , 20) , key='For_EXIT' )] ,
[sg.Button( 'Read' ) , sg.Exit( )]

]

window = sg.Window( 'SCRIPT' ).layout( layout )

Button , values , event = window.read( )

enter = prog( ) and enter in values['For_EXIT']

print(f'enter: ['-IN-']')

试试这个:

import PySimpleGUI as sg
import requests
from bs4 import BeautifulSoup
import re

sg.theme( 'Reddit' )


def prog() :
    r = requests.get( 'http://www.google.com' )
    html = r.text
    soup = BeautifulSoup( html , 'lxml' )

    links = soup.find_all( 'a' , attrs={'href' : re.compile('^http://')} )
    href = []
    for link in links :
        href.append(link['href'])
    return href


layout = [
[sg.Output( size=(38, 20) , key='For_EXIT' )] ,
[sg.Button('Read',key='Read') , sg.Button('Exit')]
]

window = sg.Window('SCRIPT',layout=layout)
while True:
    event, values = window.read()
    if event == 'Read' :
        return_value = prog()
        window['For_EXIT'].update(value=return_value)
    if event == 'Exit' or event == None:
        break    

Output 元素的用途是让您可以“打印”并将输出送到那里。您不需要对这些元素调用 update。调用 print 会将您打印的内容放在那里。

您要格外小心任何冗长的操作。这些应该是 运行 作为线程。

结果是,如果你想显示你调用prog()的结果,那么添加这一行:

print(prog())