- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试制作一个 Toplevel
小部件,它是屏幕上的事件窗口(我想要它,这样如果您按 Enter,它就会退出窗口。我已经将键绑定(bind)到小部件,但我似乎无法让窗口成为我计算机上的主窗口。我正在使用 Notepad++ 运行我的程序(我有这个特定程序的快捷方式,因为我将使用它很多)。
这是我的代码:
def main():
root = Tk(className = ' Module Opener')
app = GetFileName(root)
root.rowconfigure(0, weight = 1)
root.columnconfigure(0, weight = 1)
root.bind('<Return>', (lambda e, b=app.goButton: b.invoke()))
root.mainloop()
f, pythonType = app.fileName, app.pythonType
if f[-3:] != '.py': f += '.py'
moduleFile = getFilePath(f, pythonType)
if not moduleFile is None:
subprocess.call([r"C:\Program Files\Notepad++\notepad++.exe", moduleFile])
else:
root.withdraw()
finalRoot = Toplevel(root)
finalRoot.grab_set() # I thought this would make it active
finalApp = FileNotExist(finalRoot, f)
finalRoot.rowconfigure(0, weight = 1)
finalRoot.columnconfigure(0, weight = 1)
finalRoot.bind('<Return>', (lambda e, b=finalApp.okButton: b.invoke()))
finalRoot.mainloop()
我希望它在打开时,如果我按 Enter,它会执行我的命令;但是,我必须先在窗口中单击以激活它,然后它才能工作。
我尝试了各种方法,例如 finalRoot.lift()
、finalRoot.focus_set()
、finalRoot.grab_set()
/finalRoot.grab_set_global()
(我从 another question 中看到了这些方法)和 finalRoot.focus()
。
程序启动时,第一个窗口 Tk()
处于事件状态。但是,Toplevel()
不是。我还尝试制作两个 Tk()
(销毁 root
然后创建 finalRoot
作为新的 Tk()
实例),但这也不起作用。我怎样才能做到这一点?谢谢!
最佳答案
...however, I have to click in the window first so that it becomes active, and then it works.
我刚遇到这个问题,在研究解决方案时,我发现了这个线程。我正在使用 Windows 7 专业版。我所做的就是调用 both grab_set()
和 focus()
,它解决了我的问题。您已经有了 finalRoot.grab_set()
,只需添加:
finalRoot.focus()
它在我的案例中有效。
关于python - 激活 Tkinter Toplevel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16083491/
所以我编写了这个简单的代码来重新创建我希望我的实际应用程序的行为方式(对不起,如果我没有使用 oop 并且真的很新): import tkinter as tk from tkinter import
我无法销毁顶级(Tkinter、python) 在我的程序中 1) 在开始时用户按下按钮并出现顶层 2) 在顶层还有一些小部件和一个按钮 3)当用户按下这个(第二个)按钮时,函数(name_of_to
我制作了一个顶级小部件,但当它弹出时,它总是出现在我的根窗口下方。有没有一种简单的方法可以让它在弹出时到达最顶层? 最佳答案 您可以在顶级小部件上使用 .lift() 方法: import tkint
我有以下代码,当该方法运行时,Toplevel 窗口显示正确的标题和内容,但仍然是很小的默认大小。我是不是在做一些愚蠢且明显错误的事情? def new_game(self): self.to
编辑:让我包含我的代码,以便我可以获得一些特定的帮助。 import Tkinter def goPush(): win2=Tkinter.Toplevel() win2.geomet
我正在开发一个程序,该程序使用 tkinter TopLevel 窗口向用户显示定期更新的日志信息。我的问题是主程序是全屏的,所以每当他们在打开日志窗口后与之交互时,日志窗口是不可见的,因为它现在位于
我正在尝试将一个窗口图标添加到主窗口的子窗口中,该窗口内置于 TKinter 中。为了便携性(又名不丢失文件),我从 base64 编码的 gif 中设置了主窗口图标作为变量。我一直无法为子窗口复制它
我想了解 Tkinter 中的 Toplevel 小部件。我想创建一个带有按钮的窗口,单击该按钮会打开一个包含内容的新窗口。 我有这个,可以很好地打开一个新窗口,但我不知道如何编辑该新窗口的内容。 f
tk.Toplevel.deiconify() 有替代方案吗?我想显示一个设定数量的窗口,然后隐藏它: def show(self, event): self.master.geometry(
Toplevel 有一个方法 distroy,我很难从类内部访问它。 此代码有效: top = Toplevel() Message(top, text="bla bla bla...").pack(
我有 1 个根窗口和一个顶层窗口,我想将内容放在顶层窗口的框架中。但是,框架(而不是其中的标签)出现在根窗口中。 窗口截图。 from tkinter import * root = Tk() Lab
我正在查看 tkinter 的 Toplevel。从我所看到的effbot我可以省略它的父参数。 1-当我只使用 Toplevel 本身(注释掉 root)时,我相信它会创建自己的父窗口,因为会出现两
我有以下代码,我想将小部件初始化为默认值,但他们坚持不这样做。我正在设置 StringVar() 变量,并分配它们,但它仍然不起作用。有什么建议吗? import tkinter as tk from
我创建了一个 topLevel 小部件,想知道是否有一种方法可以相对于根窗口定位新窗口。 最佳答案 获取root窗口位置: x = root.winfo_x() y = root.winfo_y()
我正在尝试制作一个 Toplevel 小部件,它是屏幕上的事件窗口(我想要它,这样如果您按 Enter,它就会退出窗口。我已经将键绑定(bind)到小部件,但我似乎无法让窗口成为我计算机上的主窗口
以下代码按预期工作,不会触发断言: @ndb.transactional @ndb.tasklet def Foo(): assert ndb.in_transaction() 以下代码中断,触发
我遇到一个奇怪的问题,我的组件可以正确呈现(服务器端),但是 chrome devtools 中的 React 选项卡只显示 .我已经确认 window.React可用,所以我不确定是什么问题。 最
我创建了一个列表,其中包含 ocaml 中的很多元素,我想看看里面有什么,但是 ocaml 只显示了其中的一小部分像这样:[e1,e2,e3;...]。如何配置 ocaml 以显示所有内容? 最佳答案
关闭第一个顶级后尝试在 Tkinter 中创建第二个顶级时,出现错误: _tkinter.TclError: bad window path name ".!toplevel 仅当第一个顶级关闭时才会
我正在尝试创建一个 Toplevel窗口出现在我的其他窗口之一旁边,但我无法弄清楚如何在显示窗口之前设置该窗口的位置。这是简单的几行: histogram_window = Toplevel(self
我是一名优秀的程序员,十分优秀!