【发布时间】:2017-04-12 03:21:08
【问题描述】:
我的一个 python 脚本中有这个函数,它会抛出一个 Tkinter 简单对话框屏幕来要求一些简单的用户输入。该功能有效。但是,它存在 2 个问题。
- 它打开了两个窗口,而我只需要一个。但是如果我删除 master = Tk() 我会得到错误:
AttributeError: 'NoneType' 对象没有属性 'winfo_viewable'
在某一点上解决一个问题会很好,但我的主要问题是第二个问题:
- 每当出现简单的对话框屏幕时,我必须先单击它才能激活它,这很烦人。为了解决这个问题,我尝试了here 和here 提供的解决方案,但它们不起作用。第一个链接根本没有为我做任何事情,第二个链接帮助我将 master.Tk() 窗口提升到前面,但这不是什么我需要。我需要简单的对话框窗口成为最顶层的窗口,并且我需要它自动激活,这样当我运行我的代码并弹出屏幕时,我可以自动输入它而无需先单击它。
任何帮助将不胜感激!
我的代码:
def getUser():
master = Tk()
newList2=str(newList).replace(", ","\n")
for ch in ['[',']',"'"]:
if ch in newList2:
newList5=newList2.replace(ch,"")
userNr=simpledialog.askinteger("Enter user number", newList2)
chosenUsernr= userNr - 1
global chosenUsernrdef
chosenUsernrdef = chosenUsernr
master.destroy()
【问题讨论】:
-
你在
master=Tk()之后试过master.withdraw()吗? -
不,谢谢!那确实解决了问题 1。现在..还有 1 个问题要解决..
标签: python python-3.x tkinter python-3.5 simpledialog