鱼C论坛

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

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

[复制链接]
发表于 2022-2-19 11:21:06 | 显示全部楼层 |阅读模式
50鱼币
本帖最后由 flyps 于 2022-2-19 12:32 编辑
  1. import tkinter as tk
  2. from selenium import webdriver
  3. from selenium.webdriver.chrome.service import Service
  4. from selenium.webdriver.common.by import By


  5. class Gettime:
  6.     def __init__(self):
  7.         url = 'https://www.sioe.cn/rili/quanpingshizhong.php'
  8.         option = webdriver.ChromeOptions()
  9.         option.add_experimental_option("excludeSwitches", ['enable-automation', 'enable-logging'])
  10.         s = Service(r"chromedriver.exe")
  11.         self.driver = webdriver.Chrome(service=s, options=option)
  12.         self.driver.get(url)

  13.         self.windows = tk.Tk()
  14.         self.windows.geometry('200x200')
  15.         self.windows.resizable(False, False)  ## 规定窗口不可缩放
  16.         self.Label1 = tk.Label(self.windows)
  17.         self.Label1.grid(row=0)
  18.         self.refresh()
  19.         #windows.mainloop()

  20.     def refresh(self):
  21.         get_time = self.driver.find_element(By.XPATH, '//*[@id="shijian"]').text
  22.         self.Label1.config(text=get_time)
  23.         print(get_time)
  24.         self.Label1.after(1000, self.refresh)

  25. if __name__ == '__main__':
  26.     gettime = Gettime()   
  27.     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,

  1. import tkinter as tk
  2. from selenium import webdriver
  3. from selenium.webdriver.chrome.service import Service
  4. from selenium.webdriver.common.by import By
  5. import datetime                                                                   # 导入 python 内置模块 datetime

  6. class Gettime:
  7.     def __init__(self):
  8.         url = 'https://www.sioe.cn/rili/quanpingshizhong.php'
  9.         option = webdriver.ChromeOptions()
  10.         option.add_experimental_option("excludeSwitches", ['enable-automation', 'enable-logging'])
  11.         s = Service(r"chromedriver.exe")
  12.         self.driver = webdriver.Chrome(service=s, options=option)
  13.         self.driver.get(url)

  14.         self.windows = tk.Tk()
  15.         self.windows.geometry('200x200')
  16.         self.windows.resizable(False, False)  ## 规定窗口不可缩放
  17.         self.Label1 = tk.Label(self.windows)
  18.         self.Label1.grid(row=0)
  19.         self.refresh()
  20.         #windows.mainloop()

  21.     def refresh(self):
  22.         # get_time = self.driver.find_element(By.XPATH, '//*[@id="shijian"]').text
  23.         get_time = str(datetime.datetime.now())[11:19]                           # 使用datetime模块获取时间
  24.         self.Label1.config(text=get_time)
  25.         print(get_time)
  26.         self.Label1.after(1000, self.refresh)

  27. if __name__ == '__main__':
  28.     gettime = Gettime()   
  29.     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, 2024-5-14 04:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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