首页 > 解决方案 > Python程序只工作几秒钟就崩溃了

问题描述

嘿最近我的 python 程序有问题。启动后它会工作几秒钟并显示“无响应”。这是类似于程序和代码的宏,但不适用于窗口渲染。当我将检测滚动的代码标记为注释程序正确呈现但无用时。这是我的代码

import pynput
from pynput.mouse import Controller, Button
from pynput.mouse import Listener as MouseListener
import keyboard
from time import sleep
import os
import pyglet
import pyglet.window.key
width = 600
height = 500
canchange = 1
togled = 0
title = "ScrollClick by Pouek_"
window = pyglet.window.Window(width, height, title) 
text = "ScrollClick"
Scrolled = "Don't worry now. It's working I promise"
etc = "Made by Pouek_ @2020"
mouse = Controller()

while True:  
    try:  
        if keyboard.is_pressed('t'): 
            if canchange == 1 & togled == 1:
                canchange = 0
                togled = 0
                print("Toggled of")
            if canchange == 1 & togled == 0:
                canchange = 0
                togled = 1
                print("Toggled on")

            break  
    except:
        break

if canchange == 0:
    sleep(0.5)
    canchange = 1

label3 = pyglet.text.Label(etc, 
                          font_name ='Times New Roman', 
                          font_size = 24, 
                          x = window.width//2, y = window.height//1.25, 
                          anchor_x ='center', anchor_y ='center') 

label = pyglet.text.Label(text, 
                          font_name ='Times New Roman', 
                          font_size = 36, 
                          x = window.width//2, y = window.height//2, 
                          anchor_x ='center', anchor_y ='center') 
  
new_label = pyglet.text.Label(text, 
                          font_name ='Times New Roman', 
                          font_size = 10, 
                          x = 25, y = 25) 

new_label2 = pyglet.text.Label(text, 
                          font_name ='Times New Roman', 
                          font_size = 10, 
                          x = 25, y = 25) 

label2 = pyglet.text.Label(Scrolled, 
                          font_name ='Times New Roman', 
                          font_size = 24, 
                          x = window.width//2, y = window.height//10, 
                          anchor_x ='center', anchor_y ='center') 

@window.event 
def on_draw():      
    window.clear() 
    label3.draw()
    label.draw() 
    label2.draw()

def on_scroll(x, y, dx, dy):
    if togled == 1:
        print('Mouse scrolled at ({0}, {1})({2}, {3})'.format(x, y, dx, dy))
        print("Mouse scrolled")
        mouse.press(Button.right)
        mouse.release(Button.right)
        mouse_listener = MouseListener(on_move=None, on_click=None, on_scroll=on_scroll)
        mouse_listener.start()
        mouse_listener.join()

mouse = Controller()
print ("Current position: " + str(mouse.position))
#os.system("1.py")
img = image = pyglet.resource.image("logo.png")
window.set_icon(img)
pyglet.app.run() 

感谢帮助

标签: python

解决方案


我解决了这个问题并意识到这个项目是不稳定的。这是我的做法。首先,我用这段代码创建了第二个文件并将其命名为 1.py

from pynput.mouse import Controller, Button
from pynput.mouse import Listener as MouseListener
import os
def on_scroll(x, y, dx, dy):
    print('Mouse scrolled at ({0}, {1})({2}, {3})'.format(x, y, dx, dy))
    print("Mouse scrolled")
    mouse.press(Button.right)
    mouse.release(Button.right)
mouse_listener = MouseListener(on_move=None, on_click=None, on_scroll=on_scroll)
mouse = Controller()
mouse_listener.start()
mouse_listener.join()

然后我摆脱了密钥激活功能并从此更改了代码

from pynput.mouse import Controller, Button
from pynput.mouse import Listener as MouseListener
import keyboard
from time import sleep
import os
import pyglet
import pyglet.window.key
width = 600
height = 500
canchange = 1
togled = 0
title = "ScrollClick by Pouek_"
window = pyglet.window.Window(width, height, title) 
text = "ScrollClick"
Scrolled = "Don't worry now. It's working I promise"
etc = "Made by Pouek_ @2020"
mouse = Controller()

while True:  
    try:  
        if keyboard.is_pressed('t'): 
            if canchange == 1 & togled == 1:
                canchange = 0
                togled = 0
                print("Toggled of")
            if canchange == 1 & togled == 0:
                canchange = 0
                togled = 1
                print("Toggled on")

            break  
    except:
        break

if canchange == 0:
    sleep(0.5)
    canchange = 1

label3 = pyglet.text.Label(etc, 
                          font_name ='Times New Roman', 
                          font_size = 24, 
                          x = window.width//2, y = window.height//1.25, 
                          anchor_x ='center', anchor_y ='center') 

label = pyglet.text.Label(text, 
                          font_name ='Times New Roman', 
                          font_size = 36, 
                          x = window.width//2, y = window.height//2, 
                          anchor_x ='center', anchor_y ='center') 
  
new_label = pyglet.text.Label(text, 
                          font_name ='Times New Roman', 
                          font_size = 10, 
                          x = 25, y = 25) 

new_label2 = pyglet.text.Label(text, 
                          font_name ='Times New Roman', 
                          font_size = 10, 
                          x = 25, y = 25) 

label2 = pyglet.text.Label(Scrolled, 
                          font_name ='Times New Roman', 
                          font_size = 24, 
                          x = window.width//2, y = window.height//10, 
                          anchor_x ='center', anchor_y ='center') 

@window.event 
def on_draw():      
    window.clear() 
    label3.draw()
    label.draw() 
    label2.draw()

def on_scroll(x, y, dx, dy):
    if togled == 1:
        print('Mouse scrolled at ({0}, {1})({2}, {3})'.format(x, y, dx, dy))
        print("Mouse scrolled")
        mouse.press(Button.right)
        mouse.release(Button.right)
        mouse_listener = MouseListener(on_move=None, on_click=None, on_scroll=on_scroll)
        mouse_listener.start()
        mouse_listener.join()

mouse = Controller()
print ("Current position: " + str(mouse.position))
#os.system("1.py")
img = image = pyglet.resource.image("logo.png")
window.set_icon(img)
pyglet.app.run() 

对此

import pynput
from pynput.mouse import Controller, Button
from pynput.mouse import Listener as MouseListener
from pynput.keyboard import Listener
import os
import pyglet
import pyglet.window.key
width = 600
height = 500
title = "ScrollClick by Pouek_"
window = pyglet.window.Window(width, height, title) 
text = "ScrollClick"
Scrolled = "Don't worry now. It's working I promise"
etc = "Made by Pouek_ @2020"
mouse = Controller()

label3 = pyglet.text.Label(etc, 
                          font_name ='Times New Roman', 
                          font_size = 24, 
                          x = window.width//2, y = window.height//1.25, 
                          anchor_x ='center', anchor_y ='center') 

label = pyglet.text.Label(text, 
                          font_name ='Times New Roman', 
                          font_size = 36, 
                          x = window.width//2, y = window.height//2, 
                          anchor_x ='center', anchor_y ='center') 
  
new_label = pyglet.text.Label(text, 
                          font_name ='Times New Roman', 
                          font_size = 10, 
                          x = 25, y = 25) 

new_label2 = pyglet.text.Label(text, 
                          font_name ='Times New Roman', 
                          font_size = 10, 
                          x = 25, y = 25) 

label2 = pyglet.text.Label(Scrolled, 
                          font_name ='Times New Roman', 
                          font_size = 24, 
                          x = window.width//2, y = window.height//10, 
                          anchor_x ='center', anchor_y ='center') 

@window.event 
def on_draw():      
    window.clear() 
    label3.draw()
    label.draw() 
    label2.draw()

mouse = Controller()
print ("Current position: " + str(mouse.position))
img = image = pyglet.resource.image("logo.png")
window.set_icon(img)
pyglet.app.run() 
os.system("1.py")

当我运行程序时,一切正常,但是宏太快了,我需要用任务管理器关闭程序。如果你想修改它,你可以,但它非常快而且不是很有效。也感谢您的评论。他们帮了我很多:)


推荐阅读