Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/qzhjiang/easytrader into …
Browse files Browse the repository at this point in the history
…qzhjiang-master
  • Loading branch information
shidenggui committed Jun 26, 2020
2 parents 791bda6 + ae97c30 commit e92a1ef
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 48 deletions.
6 changes: 0 additions & 6 deletions docs/usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,6 @@ import easytrader

## 二、设置交易客户端类型

**海通客户端**

```python
user = easytrader.use('htzq_client')
```

**华泰客户端**

```python
Expand Down
18 changes: 4 additions & 14 deletions easytrader/clienttrader.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
from easytrader.log import logger
from easytrader.utils.misc import file2dict
from easytrader.utils.perf import perf_clock
from win32gui import SetForegroundWindow, ShowWindow

if not sys.platform.startswith("darwin"):
import pywinauto
Expand Down Expand Up @@ -85,14 +84,7 @@ def __init__(self):
self._config = client.create(self.broker_type)
self._app = None
self._main = None

def _set_foreground(self, grid=None):
if grid is None:
grid = self._trader.main
if grid.has_style(pywinauto.win32defines.WS_MINIMIZE): # if minimized
ShowWindow(grid.wrapper_object(), 9) # restore window state
else:
SetForegroundWindow(grid.wrapper_object()) # bring to front
self._toolbar = None

@property
def app(self):
Expand Down Expand Up @@ -121,6 +113,7 @@ def connect(self, exe_path=None, **kwargs):
self._app = pywinauto.Application().connect(path=connect_path, timeout=10)
self._close_prompt_windows()
self._main = self._app.top_window()
self._toolbar = self._main.child_window(class_name="ToolbarWindow32")

@property
def broker_type(self):
Expand Down Expand Up @@ -431,10 +424,6 @@ def _type_keys(self, control_id, text):
text
)

def _type_common_control_keys(self, control, text):
self._set_foreground(control)
control.type_keys(text, set_foreground=False)

def _type_edit_control_keys(self, control_id, text):
if not self._editor_need_type_keys:
self._main.child_window(
Expand Down Expand Up @@ -489,7 +478,8 @@ def _cancel_entrust_by_double_click(self, row):
).double_click(coords=(x, y))

def refresh(self):
self._switch_left_menus_by_shortcut("{F5}", sleep=0.1)
# self._switch_left_menus_by_shortcut("{F5}", sleep=0.1)
self._toolbar.button(3).click() # 我的交易客户端工具栏中“刷新”是排在第4个的,所以其索引值是3

@perf_clock
def _handle_pop_dialogs(self, handler_class=pop_dialog_handler.PopDialogHandler):
Expand Down
17 changes: 9 additions & 8 deletions easytrader/grid_strategies.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,10 @@
import pywinauto.keyboard
import pywinauto
import pywinauto.clipboard
from pywinauto import win32defines

from easytrader.log import logger
from easytrader.utils.captcha import captcha_recognize
from easytrader.utils.win_gui import SetForegroundWindow, ShowWindow
from easytrader.utils.win_gui import SetForegroundWindow, ShowWindow, win32defines

if TYPE_CHECKING:
# pylint: disable=unused-import
Expand All @@ -37,6 +36,9 @@ def set_trader(self, trader: "clienttrader.IClientTrader"):


class BaseStrategy(IGridStrategy):
def __init__(self):
self._trader = None

def set_trader(self, trader: "clienttrader.IClientTrader"):
self._trader = trader

Expand All @@ -58,7 +60,7 @@ def _set_foreground(self, grid=None):
try:
if grid is None:
grid = self._trader.main
if grid.has_style(pywinauto.win32defines.WS_MINIMIZE): # if minimized
if grid.has_style(win32defines.WS_MINIMIZE): # if minimized
ShowWindow(grid.wrapper_object(), 9) # restore window state
else:
SetForegroundWindow(grid.wrapper_object()) # bring to front
Expand Down Expand Up @@ -95,9 +97,7 @@ def _format_grid_data(self, data: str) -> List[Dict]:
def _get_clipboard_data(self) -> str:
if Copy._need_captcha_reg:
if (
self._trader.app.top_window()
.window(class_name="Static", title_re="验证码")
.exists(timeout=1)
self._trader.app.top_window().window(class_name="Static", title_re="验证码").exists(timeout=1)
):
file_path = "tmp.png"
count = 5
Expand All @@ -123,8 +123,8 @@ def _get_clipboard_data(self) -> str:
try:
logger.info(
self._trader.app.top_window()
.window(control_id=0x966, class_name="Static")
.window_text()
.window(control_id=0x966, class_name="Static")
.window_text()
)
except Exception as ex: # 窗体消失
logger.exception(ex)
Expand Down Expand Up @@ -171,6 +171,7 @@ def __init__(self, tmp_folder: Optional[str] = None):
"""
:param tmp_folder: 用于保持临时文件的文件夹
"""
super().__init__()
self.tmp_folder = tmp_folder

def get(self, control_id: int) -> List[Dict]:
Expand Down
18 changes: 8 additions & 10 deletions easytrader/pop_dialog_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,21 @@
import time
from typing import Optional

import pywinauto

from easytrader import exceptions
from easytrader.utils.perf import perf_clock
from easytrader.utils.win_gui import SetForegroundWindow, ShowWindow
from easytrader.utils.win_gui import SetForegroundWindow, ShowWindow, win32defines


class PopDialogHandler:
def __init__(self, app):
self._app = app

def _set_foreground(self, grid=None):
if grid is None:
grid = self._trader.main
if grid.has_style(pywinauto.win32defines.WS_MINIMIZE): # if minimized
ShowWindow(grid.wrapper_object(), 9) # restore window state
@staticmethod
def _set_foreground(window):
if window.has_style(win32defines.WS_MINIMIZE): # if minimized
ShowWindow(window.wrapper_object(), 9) # restore window state
else:
SetForegroundWindow(grid.wrapper_object()) # bring to front
SetForegroundWindow(window.wrapper_object()) # bring to front

@perf_clock
def handle(self, title):
Expand All @@ -40,7 +37,8 @@ def handle(self, title):
def _extract_content(self):
return self._app.top_window().Static.window_text()

def _extract_entrust_id(self, content):
@staticmethod
def _extract_entrust_id(content):
return re.search(r"[\da-zA-Z]+", content).group()

def _submit_by_click(self):
Expand Down
21 changes: 12 additions & 9 deletions easytrader/utils/win_gui.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
# coding:utf-8
import win32gui


def SetForegroundWindow(hwd):
win32gui.SetForegroundWindow(hwd._as_parameter_)


def ShowWindow(hwd, window_status):
win32gui.ShowWindow(hwd._as_parameter_, window_status)
from pywinauto import win32defines
from pywinauto.win32functions import SetForegroundWindow, ShowWindow

# import win32gui
#
#
# def SetForegroundWindow(hwd):
# win32gui.SetForegroundWindow(hwd._as_parameter_)
#
#
# def ShowWindow(hwd, window_status):
# win32gui.ShowWindow(hwd._as_parameter_, window_status)
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,4 @@ requests==2.19.1
six==1.11.0
urllib3==1.23; python_version != '3.1.*'
werkzeug==0.14.1
win32gui

0 comments on commit e92a1ef

Please sign in to comment.