Python错误,它是一个脚本,在我的主pc上工作

Python错误,它是一个脚本,在我的主pc上工作,python,python-3.x,Python,Python 3.x,错误 我的主电脑上的登录图像 我笔记本电脑上的那个 尝试修复它上面的代码是什么工作在我的主电脑,所以没有变化,将感谢一些帮助,干杯。爱你们。这看起来可能是因为您正在访问一个存在于PC上但不存在于笔记本电脑上的文件: “C:\Users\kini0801\Desktop\autopass\output.PNG” 仔细检查两台计算机上文件的位置,确保它们完全相同。如果您的用户名不同,则必须更改用户名的位置。那么..\autopass\output.PNG是什么样子?由于此图像用作定位输入框的模板,

错误

我的主电脑上的登录图像

我笔记本电脑上的那个
尝试修复它上面的代码是什么工作在我的主电脑,所以没有变化,将感谢一些帮助,干杯。爱你们。

这看起来可能是因为您正在访问一个存在于PC上但不存在于笔记本电脑上的文件:
“C:\Users\kini0801\Desktop\autopass\output.PNG”


仔细检查两台计算机上文件的位置,确保它们完全相同。如果您的用户名不同,则必须更改用户名的位置。

那么
..\autopass\output.PNG
是什么样子?由于此图像用作定位输入框的模板,因此它必须与对话框匹配。由于对话框在您的两台电脑上看起来不同,此模板图像也很可能看起来不同。主pc笔记本电脑好吧,开始调试。。。在中间返回点(coords[0]+int(coords[2]/2)、coords[1]+int(coords[3]/2))第550行的
add_text
方法中的
locateOnScreen
的输出是什么TypeError:“NoneType”对象不可订阅这是我调试它时得到的全部信息,添加文本只是打印用户名和密码,您可以使用调试器进行调试。或者至少打印出
locateOnScreen
的返回值,没有丝毫迹象表明访问此文件时出现问题。@M.Spiller我不是很高兴有经验。我只是假设,因为他们有一个硬编码的目录,并且在两台机器之间切换,这可能会导致某种问题。我的坏消息是我的大脑冻结了,这是我在代码中唯一更改的东西
{'Username': 'zxc', 'Password': 'asdas'}
Traceback (most recent call last):
  File "1.py", line 119, in <module>
    r"C:\Users\kini0801\Desktop\autopass\output.PNG", login_details["Username"],
  File "1.py", line 105, in add_text
    field = pyautogui.center(field)
  File "C:\Users\kini0801\AppData\Local\Programs\Python\Python37\lib\site-packages\pyscreeze\__init__.py", line 550, in center
    return Point(coords[0] + int(coords[2] / 2), coords[1] + int(coords[3] / 2))
TypeError: 'NoneType' object is not subscriptable
import pandas as pd
import pyautogui
import clipboard
import time
from pywinauto import application

file_name = "accounts.csv"


def get_file_length(file_name):
    try:
        df_fun = pd.read_csv(file_name)
        ss = len(df_fun["Username"].tolist())
    except:
        return 0
    return ss


def append_data(data_dict_arg, file_name):
    p = get_file_length(file_name)
    df = pd.DataFrame(data_dict_arg, index=[p])
    if p == 0:
        df.to_csv(file_name, mode="a+", header=True, encoding="utf-8", index=False)
    else:
        df.to_csv(file_name, mode="a+", header=False, encoding="utf-8", index=False)


def add_account():
    username = input("Enter Username: ")
    password = input("Enter Password: ")
    append_data({"Username": username, "Password": password}, file_name)


def get_accounts():
    file_df = pd.read_csv(file_name)
    accounts_list = []
    for index, row in file_df.iterrows():
        accounts_list.append({"Username": row["Username"], "Password": row["Password"]})
    return accounts_list


def delete_account(username_arg):
    file_df = pd.read_csv(file_name)
    file_df = file_df[file_df.Username != username_arg]
    file_df.to_csv(file_name, index=False, encoding="utf8")
    print("Successfully deleted:", username_arg)


def edit_account(old_username):
    username = input("Enter New Username:")
    password = input("Enter New Password:")
    file_df = pd.read_csv(file_name)
    index = next(iter(file_df[file_df["Username"] == old_username].index), None)
    file_df.set_value(index, "Username", username)
    file_df.set_value(index, "Password", password)
    file_df.to_csv(file_name, index=False, encoding="utf8")
    print("Successfully Edited:", old_username)


def show_options(print_msg, data_dict_arg, print_msg_2):
    while True:
        index = 1
        print(print_msg)
        for keys_play in data_dict_arg:
            print(index, ": ", keys_play)
            index += 1
        try:
            index_new = int(input(print_msg_2))
            if index > index_new > 0:
                break
        except:
            pass
    return index_new


def display_menu(main_menu_opt):
    while True:
        main_option = show_options("Main Menu:", main_menu_opt, "Choose: ")
        if main_option == 1:
            accounts = get_accounts()
            user_names = [ac["Username"] for ac in accounts]
            index = show_options("All Accounts", user_names, "Choose:")
            print(accounts[index - 1])
            return accounts[index - 1]
        elif main_option == 2:
            add_account()
        else:
            accounts = get_accounts()
            user_names = [ac["Username"] for ac in accounts]
            index = show_options("All Accounts", user_names, "Choose:")
            if main_option == 3:
                edit_account(user_names[index - 1])
            elif main_option == 4:
                delete_account(user_names[index - 1])


def click_button(img):
    field = pyautogui.locateOnScreen(img)
    field = pyautogui.center(field)
    pyautogui.leftClick(field.x, field.y)


def add_text(img, text):
    field = pyautogui.locateOnScreen(img)
    field = pyautogui.center(field)
    pyautogui.leftClick(field.x, field.y)
    pyautogui.typewrite(text)


if __name__ == "__main__":
    main_menu_options = {
        "Select Account": "",
        "Add Account": "",
        "Edit Account": "",
        "Delete Account": "",
    }
    login_details = display_menu(main_menu_options)
    add_text(
        r"C:\Users\kini0801\Desktop\autopass\output.PNG", login_details["Username"],
    )
    time.sleep(2)
    add_text(
        r"C:\Users\kini0801\Desktop\autopass\passwordpng.PNG",
        login_details["Password"],
    )
    time.sleep(2)
    click_button(r"C:\Users\kini0801\Desktop\autopass\btnpng.PNG")
    print("done")