tkinter Label 后台最小化,就不更新 ,谢谢
本帖最后由 flyps 于 2022-2-19 12:32 编辑import tkinter as tk
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
class Gettime:
def __init__(self):
url = 'https://www.sioe.cn/rili/quanpingshizhong.php'
option = webdriver.ChromeOptions()
option.add_experimental_option("excludeSwitches", ['enable-automation', 'enable-logging'])
s = Service(r"chromedriver.exe")
self.driver = webdriver.Chrome(service=s, options=option)
self.driver.get(url)
self.windows = tk.Tk()
self.windows.geometry('200x200')
self.windows.resizable(False, False)## 规定窗口不可缩放
self.Label1 = tk.Label(self.windows)
self.Label1.grid(row=0)
self.refresh()
#windows.mainloop()
def refresh(self):
get_time = self.driver.find_element(By.XPATH, '//*[@id="shijian"]').text
self.Label1.config(text=get_time)
print(get_time)
self.Label1.after(1000, self.refresh)
if __name__ == '__main__':
gettime = Gettime()
tk.mainloop()
上面的代码,如将窗口放在最前面,则会一直正常运行,但如果窗口最小化后,一段时间(可能几分钟或十来分钟),就会出现Label1的时间不更新,请问这是什么原因,如何修改,谢谢 本帖最后由 isdkz 于 2022-2-19 11:58 编辑
这不是tkinter的问题,这是浏览器的问题,
浏览器更新时间是用的js脚本,但是浏览器切到后台一段时间 js 脚本就不执行了,
建议你不要用获取浏览器元素的方式来更新时间,这样获取到的时间延迟也会比较大 isdkz 发表于 2022-2-19 11:47
这不是tkinter的问题,这是浏览器的问题,
浏览器更新时间是用的js脚本,但是浏览器切到后台一段时间 js ...
谢谢,我也留意到了
那么如何隔一段时间让浏览器发空信息,能否让JS脚本一直运行,具体能怎么操作,谢谢 flyps 发表于 2022-2-19 12:37
谢谢,我也留意到了
那么如何隔一段时间让浏览器发空信息,能否让JS脚本一直运行,具体能怎么操作,谢谢
不能吧,我之前用油猴脚本就有这样的问题,实在没有办法解决,
我建议你获取时间还是用python内置的库吧,没必要用selenium,
import tkinter as tk
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import datetime # 导入 python 内置模块 datetime
class Gettime:
def __init__(self):
url = 'https://www.sioe.cn/rili/quanpingshizhong.php'
option = webdriver.ChromeOptions()
option.add_experimental_option("excludeSwitches", ['enable-automation', 'enable-logging'])
s = Service(r"chromedriver.exe")
self.driver = webdriver.Chrome(service=s, options=option)
self.driver.get(url)
self.windows = tk.Tk()
self.windows.geometry('200x200')
self.windows.resizable(False, False)## 规定窗口不可缩放
self.Label1 = tk.Label(self.windows)
self.Label1.grid(row=0)
self.refresh()
#windows.mainloop()
def refresh(self):
# get_time = self.driver.find_element(By.XPATH, '//*[@id="shijian"]').text
get_time = str(datetime.datetime.now()) # 使用datetime模块获取时间
self.Label1.config(text=get_time)
print(get_time)
self.Label1.after(1000, self.refresh)
if __name__ == '__main__':
gettime = Gettime()
tk.mainloop() isdkz 发表于 2022-2-19 12:44
不能吧,我之前用油猴脚本就有这样的问题,实在没有办法解决,
我建议你获取时间还是用python内置的库吧 ...
明白了,谢谢 flyps 发表于 2022-2-19 12:48
明白了,谢谢
不客气{:5_109:},我要是找到了浏览器切到后台,js脚本的执行不中断的方法一定告诉你 isdkz 发表于 2022-2-19 12:53
不客气,我要是找到了浏览器切到后台,js脚本的执行不中断的方法一定告诉你
好的,感谢
页:
[1]