鱼C论坛

 找回密码
 立即注册
查看: 1320|回复: 6

[已解决]tkinter Label 后台最小化,就不更新 ,谢谢

[复制链接]
发表于 2022-2-19 11:21:06 | 显示全部楼层 |阅读模式
50鱼币
本帖最后由 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的时间不更新,请问这是什么原因,如何修改,谢谢
最佳答案
2022-2-19 11:21:07
本帖最后由 isdkz 于 2022-2-19 11:58 编辑

这不是tkinter的问题,这是浏览器的问题,

浏览器更新时间是用的js脚本,但是浏览器切到后台一段时间 js 脚本就不执行了,

建议你不要用获取浏览器元素的方式来更新时间,这样获取到的时间延迟也会比较大

最佳答案

查看完整内容

这不是tkinter的问题,这是浏览器的问题, 浏览器更新时间是用的js脚本,但是浏览器切到后台一段时间 js 脚本就不执行了, 建议你不要用获取浏览器元素的方式来更新时间,这样获取到的时间延迟也会比较大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-19 11:21:07 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2022-2-19 11:58 编辑

这不是tkinter的问题,这是浏览器的问题,

浏览器更新时间是用的js脚本,但是浏览器切到后台一段时间 js 脚本就不执行了,

建议你不要用获取浏览器元素的方式来更新时间,这样获取到的时间延迟也会比较大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-2-19 12:37:09 | 显示全部楼层
isdkz 发表于 2022-2-19 11:47
这不是tkinter的问题,这是浏览器的问题,

浏览器更新时间是用的js脚本,但是浏览器切到后台一段时间 js ...

谢谢,我也留意到了
那么如何隔一段时间让浏览器发空信息,能否让JS脚本一直运行,具体能怎么操作,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-19 12:44:15 | 显示全部楼层
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())[11:19]                           # 使用datetime模块获取时间
        self.Label1.config(text=get_time)
        print(get_time)
        self.Label1.after(1000, self.refresh)

if __name__ == '__main__':
    gettime = Gettime()   
    tk.mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-2-19 12:48:45 | 显示全部楼层
isdkz 发表于 2022-2-19 12:44
不能吧,我之前用油猴脚本就有这样的问题,实在没有办法解决,
我建议你获取时间还是用python内置的库吧 ...

明白了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-19 12:53:19 | 显示全部楼层

不客气,我要是找到了浏览器切到后台,js脚本的执行不中断的方法一定告诉你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-2-19 13:24:13 | 显示全部楼层
isdkz 发表于 2022-2-19 12:53
不客气,我要是找到了浏览器切到后台,js脚本的执行不中断的方法一定告诉你

好的,感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 06:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表