Python-将焦点移到simpledialogbox

Python-将焦点移到simpledialogbox,python,tkinter,simpledialog,Python,Tkinter,Simpledialog,所以我正在编写一个脚本,它使用pyautogui启动一个web浏览器,然后转到一个特定页面,在那里它将打印多个pdf。但是,在打印之前,它会弹出一个simpledialogbox并请求一个整数,这样它就知道重复打印循环多少次。目前脚本还可以工作,但我想让simpledialogbox弹出时,它会从网页中获取焦点,因此用户只需键入他们的号码并按enter键 为了让事情变得简单,我创建了一个简单的脚本来启动记事本,并以相同的方式请求一个整数,然后重复一个简单的while循环。这说明了我的问题,但也大

所以我正在编写一个脚本,它使用pyautogui启动一个web浏览器,然后转到一个特定页面,在那里它将打印多个pdf。但是,在打印之前,它会弹出一个simpledialogbox并请求一个整数,这样它就知道重复打印循环多少次。目前脚本还可以工作,但我想让simpledialogbox弹出时,它会从网页中获取焦点,因此用户只需键入他们的号码并按enter键

为了让事情变得简单,我创建了一个简单的脚本来启动记事本,并以相同的方式请求一个整数,然后重复一个简单的while循环。这说明了我的问题,但也大大减少了需要排序的代码量

免责声明-由于我的tkinter窗口已经打开,我可以很容易地看到simpledialogbox,问题是焦点滞后,并且只能键入数字

提前谢谢,请不要只是结束我的问题

from tkinter import simpledialog
import tkinter as tk
import pyautogui
import time


master = tk.Tk()
master.geometry("300x100+1620+0")


master.lift()
master.attributes('-topmost',True)


def move_mouse():
    pyautogui.hotkey("win")
    time.sleep(2)
    pyautogui.typewrite("notepad")
    time.sleep(2)
    pyautogui.hotkey("enter")
    time.sleep(2)
    pyautogui.hotkey("win", "up")
    time.sleep(2)
    count = 0
    number = simpledialog.askinteger("Input", "How many rotations of the while loop? ",
                                   parent=master, minvalue=0, maxvalue=10)
    time.sleep(2)
    pyautogui.moveTo(900, 500)
    pyautogui.click()
    while count <= number-1:
        pyautogui.typewrite("notepad")
        time.sleep(1)
        pyautogui.hotkey("enter")
        time.sleep(1)
        count = count + 1


test_button = tk.Button(master, text="Test", command=move_mouse)
test_button.pack()

      
master.mainloop()
从tkinter导入simpledialog
将tkinter作为tk导入
导入pyautogui
导入时间
master=tk.tk()
主几何(“300x100+1620+0”)
主升降机()
master.attributes('-top',True)
def move_mouse():
pyautogui.hotkey(“win”)
时间。睡眠(2)
pyautogui.typewrite(“记事本”)
时间。睡眠(2)
pyautogui.hotkey(“输入”)
时间。睡眠(2)
pyautogui.hotkey(“win”,“up”)
时间。睡眠(2)
计数=0
数字=simpledialog.askinteger(“输入”,“while循环旋转了多少次?”,
父项=主项,最小值=0,最大值=10)
时间。睡眠(2)
pyautogui.moveTo(900500)
pyautogui.click()

当count时,您需要在之前调用
update\u idletasks

from tkinter import *
from tkinter import simpledialog

root = Tk()
root.update_idletasks()
number = simpledialog.askinteger("Input", "How many rotations of the while loop? ",
                                 parent=root, minvalue=0, maxvalue=10)


root.mainloop()

所以你的建议对我的虚拟脚本非常有效,当我调用记事本而不是chrome时,对我的完整脚本也非常有效。所以我相信你的答案,因为我认为节目类型无关紧要。我会写一篇新的帖子,写下我最后做的事情,因为评论不是永远的。谢谢你帮助我。
from tkinter import *
from tkinter import simpledialog

root = Tk()
root.update_idletasks()
number = simpledialog.askinteger("Input", "How many rotations of the while loop? ",
                                 parent=root, minvalue=0, maxvalue=10)


root.mainloop()