| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
以下代码在idle的原代码里可以正常运行, 会在G:\time.txt文件中记录鼠标点击时间, 
但把程序用pyinstaller转成exe文件后确不会记录鼠标点击时间是怎么回事? 
- from pynput import mouse
 
 - import time
 
  
- class mousetimer():
 
 -     def __init__(self,):
 
 -         # 初始化SB的释放状态
 
 -         self.start_time = 0
 
  
-     def on_click(self, x, y, button, pressed):        
 
 -         # 按下 SB 左键开始计时
 
 -         if str(button) == 'Button.left' and pressed:
 
 -             self.start_time = time.time()
 
  
-             with open(r'G:\time.txt', 'a') as file_object:
 
 -                 file_object.write(str(self.start_time)+'\n')            
 
  
-     def start(self):            
 
 -         # 需要监听的 SB 事件
 
 -         listener = mouse.Listener(on_click=self.on_click, suppress=False)
 
 -         # 开始监听
 
 -         listener.start()
 
  
- if __name__ == '__main__':
 
 -     mouse_timer = mousetimer()
 
 -     mouse_timer.start()
 
  复制代码 
 本帖最后由 阿奇_o 于 2022-10-17 17:31 编辑  
 
应该是你 没理解 non-block非阻塞式 和 block阻塞式 的区别, 用错了。 
 
再仔细看看官方文档吧,然后,根据你的需求,应该是改写为 block模式 。 
 
或者,你把现在这种non-block模式,改写和放到 GUI的main-loop里(如果你刚好涉及GUI类似的逻辑)。 
 
其次,根据你当前的需求,或许无需用面向对象来封装on_click等方法,不然你可能不太会改写和调用(官方的例子是非面向对象的) 
 
 
 
 
 |   
 
 
 
 |