dcsdnyhm 2026-01-28 22:02 采纳率: 0%
浏览 4

N个显示器显示N个股票软件,要显示同一只股,但是又不想输入N次代码,怎么联动?

N个显示器显示N个股票软件,要显示同一只股,但是又不想输入N次代码,怎么联动?

当单击其中任 一 一个显示器中的个股时,在该个股下方弹出一个按钮(要求不单击个股时,就不弹出按钮),单击该按钮后,其他显示器就显示相同个股。要求另外设置个“脚本运行与禁止运行”的按钮,如果这个按钮无法实现就算了。

假设七个显示器即3个通达信+2东方财富+2同花顺,可以有选择性的选择股软进行单向或双向联动(这里的双向联动指单击1号显示器时,2号显示器被联动,单击2号显示器时,1号显示器被联动),或者是可选择哪些显示器之间联动,哪些不联动。估计可能用不到这么多显示器,有备无患。

当股票软件升级时,脚本的升级是免费的,或者无需升级脚本也能使用联动。

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2026-01-28 22:03
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    要实现“N个显示器显示N个股票软件,联动显示同一只股票”,并且满足以下需求:

    1. 无需手动输入N次股票代码
    2. 单击某一个显示器中的个股时,在该个股下方弹出按钮(仅在点击个股时弹出);
    3. 点击按钮后,其他显示器同步显示相同个股
    4. 设置一个“脚本运行与禁止运行”的按钮
    5. 支持不同股票软件之间的联动控制(如通达信、东方财富、同花顺);
    6. 支持选择性联动(单向或双向)
    7. 脚本升级免费或不依赖软件版本

    ✅ 解决方案概述

    我们可以通过以下方式实现这个功能:

    一、技术选型

    • 编程语言:Python(适合自动化脚本开发)
    • 工具/库
      • pyautogui:用于模拟鼠标点击和键盘操作
      • tkinterPyQt:用于创建GUI界面
      • time / threading:用于定时任务和多线程处理
      • os / subprocess:用于启动/关闭股票软件

    ✅ 详细步骤与实现方法

    1. 设计主控程序结构

    1.1 主程序功能模块

    • 股票代码输入模块
    • 显示器状态管理模块
    • 联动逻辑控制模块
    • 按钮弹出逻辑
    • GUI界面模块
    • 脚本运行开关模块

    1.2 程序流程图

    +-----------------------------------+
    |          主程序启动               |
    +-----------------------------------+
                |                         |
           +---v---+                     |
           | 输入股票代码 | <------------+
           +-------------+
                |
           +---v---+
           | 显示器配置 | <------------+
           +-------------+
                |
           +---v---+
           | 联动逻辑   | <------------+
           +-------------+
                |
           +---v---+
           | GUI界面    | <------------+
           +-------------+
    

    2. 实现“单击个股后弹出按钮”功能

    2.1 检测股票软件窗口位置

    使用 pyautogui 获取每个股票软件的窗口坐标,例如:

    import pyautogui
    
    # 获取某个股票软件窗口的位置(假设是通达信)
    def get_window_position(app_name):
        # 这里需要根据实际窗口名称获取坐标
        # 可以用 pygetwindow 库来获取窗口信息
        return (x, y, width, height)
    

    2.2 在个股下方弹出按钮

    当检测到用户点击了某个股票软件中的个股时,在该个股下方绘制一个按钮。可以使用 tkinter 创建弹窗或在主界面上添加按钮。

    import tkinter as tk
    
    def show_button():
        button = tk.Button(root, text="联动", command=trigger_linkage)
        button.pack()
    

    3. 实现“点击按钮后联动所有显示器”

    3.1 需要对每个显示器上的股票软件进行操作

    使用 pyautogui 模拟键盘输入股票代码,并触发刷新。

    def trigger_linkage(stock_code):
        for display in displays:
            if display.is_active:
                pyautogui.click(display.x, display.y)  # 点击股票软件窗口
                pyautogui.write(stock_code)
                pyautogui.press('enter')
    

    4. 实现“脚本运行与禁止运行”按钮

    4.1 使用 tkinter 创建按钮

    def toggle_script(enable):
        global script_running
        script_running = enable
        if enable:
            print("脚本已启用")
        else:
            print("脚本已禁用")
    

    5. 实现“可选择性联动”功能

    5.1 定义显示器之间联动关系

    可以用字典或列表保存哪些显示器之间需要联动:

    linkage_rules = {
        "display_1": ["display_2", "display_3"],
        "display_2": ["display_1"],
        "display_3": [],
    }
    

    5.2 根据规则执行联动

    def apply_linkage_rules(stock_code):
        for source in linkage_rules:
            if source == current_display:
                for target in linkage_rules[source]:
                    perform_linkage(target, stock_code)
    

    6. 兼容不同股票软件

    6.1 针对不同软件的定位差异

    每种股票软件的窗口布局不同,需要分别定义其坐标和操作方式。

    stock_software_config = {
        "通达信": {"window_title": "通达信", "input_coords": (100, 200)},
        "东方财富": {"window_title": "东方财富", "input_coords": (150, 250)},
        "同花顺": {"window_title": "同花顺", "input_coords": (120, 220)},
    }
    

    7. 确保脚本兼容性

    7.1 不依赖股票软件版本

    通过 模拟鼠标键盘操作 来完成联动,不涉及股票软件内部接口,因此不会因软件升级而失效。


    ✅ 示例代码(简化版)

    import pyautogui
    import time
    import threading
    import tkinter as tk
    
    # 假设的显示器配置
    displays = [
        {"name": "Display 1", "software": "通达信", "coords": (100, 100)},
        {"name": "Display 2", "software": "东方财富", "coords": (300, 100)},
        {"name": "Display 3", "software": "同花顺", "coords": (500, 100)},
    ]
    
    script_running = True
    
    def trigger_linkage(stock_code):
        if not script_running:
            return
        for display in displays:
            x, y = display["coords"]
            pyautogui.click(x, y)
            pyautogui.write(stock_code)
            pyautogui.press('enter')
    
    def show_button(stock_code):
        def on_click():
            trigger_linkage(stock_code)
        button = tk.Button(root, text="联动", command=on_click)
        button.pack()
    
    root = tk.Tk()
    root.title("股票联动控制器")
    
    def start_script():
        stock_code = entry.get()
        show_button(stock_code)
    
    entry = tk.Entry(root)
    entry.pack()
    
    button_start = tk.Button(root, text="开始联动", command=start_script)
    button_start.pack()
    
    toggle_button = tk.Button(root, text="脚本运行", command=lambda: toggle_script(True))
    toggle_button.pack()
    
    root.mainloop()
    

    ✅ 总结

    关键点总结:

    1. 无需重复输入股票代码:通过脚本统一控制。
    2. 弹出按钮机制:基于点击事件触发。
    3. 联动逻辑:使用 pyautogui 模拟操作,适用于各类股票软件。
    4. 脚本运行开关:通过 GUI 控制脚本启停。
    5. 可配置联动关系:支持任意显示器之间的联动。
    6. 兼容性强:不依赖股票软件版本。

    如果你有具体股票软件的窗口截图或坐标信息,我可以进一步优化代码,使其更精准地识别和操作各显示器。是否需要我帮你写一个针对特定显示器的联动脚本?

    评论

报告相同问题?

问题事件

  • 创建了问题 1月28日