Tbl Cocal?
Знаток
(484)
1 месяц назад
from tkinter import *
import pyautogui
app = Tk()
def clickEvent():
# Text to be typed
text_to_type = "Hello, World!"
# Type the text at the current cursor position
pyautogui.typewrite(text_to_type)
Button(text="Ввести текст", command=clickEvent).pack()
app.mainloop()
RomanЗнаток (390)
1 месяц назад
Проблема в том, что при нажатии кнопки в окне tkinter другое окно перестаёт быть активным, из-за чего набор текста в нём не происходит. Возможно ли обойти это без стороннего ПО?
Вадим Танцев
Знаток
(463)
1 месяц назад
Когда то кодил на паре ооп языков.
Но есть чат джи пи ти.
Он выдал, в ответ на вопрос как Вы написали:
Взаимодействие через Python с приложениями устройства
Например, у меня есть такой код:
from tkinter import *
app = Tk()
def clickEvent():
""" какой-то код """
Button(text="Ввести текст", command=clickEvent).pack()
app.mainloop()
Что должно быть написано в clickEvent(), чтобы при установке курсора в текстовое поле любого текстового редактора, браузера или какого-то приложения, и нажатии на кнопку btn, в данное поле вводился какой-нибудь текст?
Иначе говоря, чтобы c помощью кнопок окна tkinter можно было печатать текст где угодно на устройстве?
Видел несколько библиотек, с помощью которых якобы можно реализовать это, однако у меня получилось добиться только того, чтобы текст вводился в консоль, но не где угодно.
..
Для реализации такого функционала, чтобы текст вводился в любое текстовое поле вне приложения (например, в текстовый редактор, браузер или другое приложение), потребуется взаимодействие с системой на уровне симуляции нажатий клавиш. В Python для этих целей можно использовать библиотеку `pyautogui` или `keyboard`.
### Использование `pyautogui`
```bash
pip install pyautogui
```
Пример кода:
```python
from tkinter import *
import pyautogui
import time
app = Tk()
def clickEvent():
# Ждем небольшую паузу, чтобы успеть переключиться в нужное окно
time.sleep(2)
# Вводим текст в активное окно
pyautogui.typewrite("Hello from tkinter button!")
Button(text="Ввести текст", command=clickEvent).pack()
app.mainloop()
```
### Как это работает:
1. `time.sleep(2)` добавляет задержку, чтобы у вас было время переключиться на нужное окно (текстовый редактор или браузер).
2. `pyautogui.typewrite("Hello from tkinter button!")` отправляет текст, как будто он был набран вручную.
### Использование `keyboard`
Еще один вариант — это библиотека `keyboard`, которая позволяет симулировать нажатия клавиш.
```bash
pip install keyboard
```
Пример кода:
```python
from tkinter import *
import keyboard
import time
app = Tk()
def clickEvent():
# Ждем 2 секунды, чтобы успеть переключиться на нужное окно
time.sleep(2)
# Симулируем ввод текста
keyboard.write("Hello from tkinter button!")
Button(text="Ввести текст", command=clickEvent).pack()
app.mainloop()
```
### Как это работает:
1. `keyboard.write("Hello from tkinter button!")` вводит указанный текст в активное окно, симулируя клавиатурный ввод.
Обе библиотеки позволяют ввести текст в активное окно, даже если это другое приложение на устройстве.
Иначе говоря, чтобы c помощью кнопок окна tkinter можно было печатать текст где угодно на устройстве?
Видел несколько библиотек, с помощью которых якобы можно реализовать это, однако у меня получилось добиться только того, чтобы текст вводился в консоль, но не где угодно.