相关疑难解决方法(0)

Tkinter的overrideredirect可防止Mac和Linux中的某些事件

我正在用Python编写一个带有Tkinter UI的程序.我想要一个没有标题栏的小窗口.此窗口必须接收键盘输入.我不挑剔这是以Entry小部件的形式还是只是绑定到KeyPress.overrideredirect(True)通常是标题栏被禁用的方式.不幸的是,(除了在Windows中),这似乎阻止了许多事件被接收.我写了这段代码来说明问题:

#!/usr/bin/env python
from __future__ import print_function
import Tkinter

class AppWindow(Tkinter.Tk):
    def __init__(self, *args, **kwargs):
        Tkinter.Tk.__init__(self, *args, **kwargs)
        self.overrideredirect(True)
        self.geometry("400x25+100+300")

        titleBar = Tkinter.Frame(self)
        titleBar.pack(expand = 1, fill = Tkinter.BOTH)

        closeButton = Tkinter.Label(titleBar, text = "x")
        closeButton.pack(side = Tkinter.RIGHT)
        closeButton.bind("<Button-1>", lambda event: self.destroy())

        self.bind("<KeyPress>", lambda event: print("<KeyPress %s>" % event.char))
        self.bind("<Button-1>", lambda event: print("<Button-1>"))
        self.bind("<Enter>", lambda event: print("<Enter>"))
        self.bind("<Leave>", lambda event: print("<Leave>"))
        self.bind("<FocusIn>", lambda event: print("<FocusIn>"))
        self.bind("<FocusOut>", lambda event: print("<FocusOut>"))

if __name__ == "__main__":
    app = AppWindow()
    app.mainloop() …
Run Code Online (Sandbox Code Playgroud)

python linux tk-toolkit tkinter tcl

13
推荐指数
1
解决办法
1099
查看次数

python tkinter覆盖重定向;无法接收击键 (Linux)

我有一个想要全屏运行的 python tkinter 应用程序。当我取消对 overrideredirect 的注释时,窗口管理器(Gnome、Linux)将无法再将击键转发到应用程序。

(片段,蟒蛇)

# make it cover the entire screen
w, h = master.winfo_screenwidth(), master.winfo_screenheight()
self.root.geometry("%dx%d+0+0" % (w, h))
self.root.focus_set() # <-- move focus to this widget
self.root.bind('<Escape>', self.root.quit())
#self.root.overrideredirect(True)
Run Code Online (Sandbox Code Playgroud)

我找到了用于 Tcl/Tk 的 window::or 包,它应该可以解决这个错误。我将如何安装它,是否可以在我的 python 应用程序中使用它?

http://www.binarism.com/tk/window/or/

http://www.binarism.com/tk/window-or-0.1.1.tgz

python tkinter

4
推荐指数
1
解决办法
4622
查看次数

标签 统计

python ×2

tkinter ×2

linux ×1

tcl ×1

tk-toolkit ×1