如何移动pyautogui.prompt()?

How to move pyautogui.prompt()?

当调用 pyautogui.prompt() 时,它会显示一个消息框,并且它始终位于同一位置。那个盒子里装着我需要看的图片,所以我可以写下正确的数字。我需要移动框或使其不可见或最小化或使其失去焦点。

问题是您无法在消息框显示时或显示后执行代码。 pyautogui.prompt 编码如下:pyautogui.prompt(text='', title='', default='', root=None, timeout=None)。我知道每个参数的作用,except root。根参数不接受布尔值、整数、列表、字符串、点或元组。它会显示一条错误消息:AttributeError: 'tuple' object has no attribute 'withdraw',如果您将布尔值、整数、列表、字符串、点或元组放入。

root唯一接受的就是pyautogui.moveTopyautogui.dragTo等鼠标指令。这不是很有用,因为它们在框出现之前执行。这是我的代码:

import pyautogui

selected_picture = int(pyautogui.prompt('Please write which picture to click on.',
                                        'Select picture'))

if selected_picture == 1:
   pyautogui.click(500,270)
if selected_picture == 2:
    pyautogui.click(700,270)
if selected_picture == 3:
    pyautogui.click(900,270)

是的,我需要用 pyautogui.prompt 或其他一些消息框来完成。原始文档甚至没有提到 root 或 timeout 属性,我无法在任何地方找到该信息。我正在尝试使用 tkinter,但我不知道它的作用。

我找不到移动提示的方法,所以我做了一些更简单的事情。我刚刚使用了 IDLE。

import pyautogui

pyautogui.hotkey('alt','shift')
selected_picture = input()
pyautogui.hotkey('alt','shift')

if selected_picture == 1:
   pyautogui.click(500,270)
if selected_picture == 2:
    pyautogui.click(700,270)
if selected_picture == 3:
    pyautogui.click(900,270)

我不知道你是想改变 window 出现的位置,还是想在它出现后移动它。如果您只想更改默认的 window 位置,可以通过导入 pymsgbox 并更改其 rootWindowPosition 值(默认值为 "+300+200")然后每条消息来完成您之后放置的框将出现在新位置。

import pyautogui as pag
import pymsgbox

pag.prompt(text="300,200")  # appears at (300, 200)
pymsgbox.rootWindowPosition = "+500+500"
pag.prompt(text="500,500")  # appears at (500, 500)