Как использовать pywinauto для set_text в python IDLE редакторе? - PullRequest
0 голосов
/ 09 февраля 2020

Я хочу управлять python IDLE с помощью pywinauto.

Я могу запустить IDLE, но не могу ввести текст.

Вот мой код:

import pywinauto
app = pywinauto.application.Application(backend="uia").start(r"C:\Python37\pythonw.exe C:\Python37\Lib\idlelib\idle.pyw")
app2 = pywinauto.application.Application().connect(process=app.process)

I пытался использовать app2.Property.print_control_identifiers() но возвращает:

Traceback (most recent call last):
  File "C:\Python37\lib\site-packages\pywinauto\application.py", line 256, in __resolve_control
    criteria)
  File "C:\Python37\lib\site-packages\pywinauto\timings.py", line 458, in wait_until_passes
    raise err

pywinauto.timings.TimeoutError

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    app2.Property.print_control_identifiers()
  File "C:\Python37\lib\site-packages\pywinauto\application.py", line 595, in print_control_identifiers
    this_ctrl = self.__resolve_control(self.criteria)[-1]
  File "C:\Python37\lib\site-packages\pywinauto\application.py", line 259, in __resolve_control
    raise e.original_exception
  File "C:\Python37\lib\site-packages\pywinauto\timings.py", line 436, in wait_until_passes
    func_val = func(*args, **kwargs)
  File "C:\Python37\lib\site-packages\pywinauto\application.py", line 201, in __get_ctrl
    dialog = self.backend.generic_wrapper_class(findwindows.find_element(**criteria[0]))
  File "C:\Python37\lib\site-packages\pywinauto\findwindows.py", line 84, in find_element
    elements = find_elements(**kwargs)
  File "C:\Python37\lib\site-packages\pywinauto\findwindows.py", line 303, in find_elements
    elements = findbestmatch.find_best_control_matches(best_match, wrapped_elems)
  File "C:\Python37\lib\site-packages\pywinauto\findbestmatch.py", line 533, in find_best_control_matches
    raise MatchError(items = name_control_map.keys(), tofind = search_text)
pywinauto.findbestmatch.MatchError: Could not find 'Property' in 'dict_keys(['*Python 3.7.2 Shell*TkTopLevel', '*Python 3.7.2 Shell*', 'TkTopLevel'])'

Как решить проблему?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2020

app = pywinauto.application.Application (backend = "uia"). Start (r "C: \ Python37 \ pythonw.exe C: \ Python37 \ Lib \ idlelib \ idle.pyw") app2 = pywinauto.application.Application (). connect (process = app.process) app3 = app2.top_window () app3.print_control_identifiers ()

0 голосов
/ 10 февраля 2020

Я сомневаюсь, что вы можете сделать все, что вы пытаетесь сделать. pywinauto site говорит, что «pywinauto - это набор python модулей для автоматизации Microsoft Windows GUI. В простейшем случае он позволяет отправлять действия мыши и клавиатуры в windows диалогах и элементах управления «. IDLE использует tkinter, который использует фреймворк tcl / tk gui. Хотя в конечном итоге используется Windows графика, она может быть не на том уровне, к которому обращается pywinauto.

...