如何让Tkinter中的框架以全屏模式显示? ? ?我看到这个代码,这是非常有用的,它是非常有用的,但是这是一个可能的,当我点击Esc自动''还原''窗口? 可能它是一个非常复杂的代码,请帮助。在Tkinter上显示全屏模式
回答
这会创建一个全屏窗口。按Escape
默认情况下将窗口大小调整为'200x200 + 0 + 0'。如果移动窗口或调整窗口大小,则Escape
将在当前几何图形和以前的几何图形之间切换。
import Tkinter as tk
class FullScreenApp(object):
def __init__(self, master, **kwargs):
self.master=master
pad=3
self._geom='200x200+0+0'
master.geometry("{0}x{1}+0+0".format(
master.winfo_screenwidth()-pad, master.winfo_screenheight()-pad))
master.bind('<Escape>',self.toggle_geom)
def toggle_geom(self,event):
geom=self.master.winfo_geometry()
print(geom,self._geom)
self.master.geometry(self._geom)
self._geom=geom
root=tk.Tk()
app=FullScreenApp(root)
root.mainloop()
我认为这是你在找什么:
Tk.attributes("-fullscreen", True) # substitute `Tk` for whatever your `Tk()` object is called
可以使用wm_attributes
,而不是attributes
了。
然后,只需绑定ESC键和它添加到处理程序:
Tk.attributes("-fullscreen", False)
的答案提到这一点(与wm_attributes
)另一个问题。所以,我就是这么发现的。但是,没有人直接出去说这是因为某种原因的答案。所以,我觉得这是值得发布。
下面是一个使用F11切换全屏和关闭,并在那里工作的例子(上是Xubuntu 14.04测试)逃避只会将其关闭:
import sys
if sys.version_info[0] == 2: # Just checking your Python version to import Tkinter properly.
from Tkinter import *
else:
from tkinter import *
class Fullscreen_Window:
def __init__(self):
self.tk = Tk()
self.tk.attributes('-zoomed', True) # This just maximizes it so we can see the window. It's nothing to do with fullscreen.
self.frame = Frame(self.tk)
self.frame.pack()
self.state = False
self.tk.bind("<F11>", self.toggle_fullscreen)
self.tk.bind("<Escape>", self.end_fullscreen)
def toggle_fullscreen(self, event=None):
self.state = not self.state # Just toggling the boolean
self.tk.attributes("-fullscreen", self.state)
return "break"
def end_fullscreen(self, event=None):
self.state = False
self.tk.attributes("-fullscreen", False)
return "break"
if __name__ == '__main__':
w = Fullscreen_Window()
w.tk.mainloop()
如果你想隐藏的菜单,也有只有两种方式,我发现要做到这一点。一个是摧毁它。另一个是做一个空白菜单来切换。
self.tk.config(menu=self.blank_menu) # self.blank_menu is a Menu object
然后将它切换回菜单,当你想让它再次出现时。
self.tk.config(menu=self.menu) # self.menu is your menu.
为什么你手动使用'w.tk.destroy'?我从来没有在Python Tk应用程序中看到过这个。 – exhuma
@exhuma(出于某种原因,我没有看到您的评论。)好的问题。感谢您指出了这一点。这里似乎没有必要。我想我在第一次开始Tkinter编程时看到别人这样做了,我没有多想它就继续保持它。然而,在我编程一次的某个程序或其他程序中可能有其原因,但我不知道是什么原因。无论如何,它不会影响执行,但是我将在此处将代码编辑出来,并将主循环放在构造函数的外部。 – Shule
@exhuma我发现背后有一些原因。显然,没有它的某些开发环境会发生故障(尽管在常规Python环境中似乎并不需要它)。此链接提供了一个代码示例和解释:http://effbot.org/tkinterbook/tkinter-hello-again.htm – Shule
我认为,如果你正在寻找全屏而已,没有必要设置几何形状或MAXSIZE等
你只需要做到这一点:
- 如果您正在Ubuntu上:
root=tk.Tk()
root.attributes('-zoomed', True)
-and如果您正在使用的窗口:
root.state('zoomed')
现在对于全屏之间切换,以最小化它到任务栏,你可以使用:
Root.iconify()
这将创建在Mac上完全全屏窗口(无可见的菜单栏)不搞乱键绑定
import tkinter as tk
root = tk.Tk()
root.overrideredirect(True)
root.overrideredirect(False)
root.attributes('-fullscreen',True)
root.mainloop()
- 1. AS3 FLVPlayback全屏模式显示黑屏
- 2. 如何在macOS上以全屏显示tkinter应用程序?
- 3. 以全屏模式显示的图片
- 4. NSToolbar进入全屏模式时显示
- 5. 显示IE在全屏模式下,但显示任务栏
- 6. MPMoviePlayerController全屏模式实际上不会在整个屏幕上显示
- 7. 不要在全屏模式下显示偏好屏幕Android
- 8. 在Android的屏幕上全屏显示插页式广告
- 9. MacOS上的vscode:将导航菜单显示为全屏模式
- 10. 如何在全屏模式下在IE8中显示滚动条?
- 11. 如何在iPhone上显示全屏iAd?
- 12. tinyMCE在全屏模式下显示默认的HTML代码
- 13. AS3在全屏模式下显示帧频
- 14. 如何在Android肖像模式下将WebcamTexture全屏显示?
- 15. Android OnItemClick在全屏模式下显示图像
- 16. Java和全屏模式在多个显示器
- 17. Kinect在全屏模式下显示深度图像
- 18. SDL假全屏模式在Linux下的双显示器设置
- 19. 显示自定义光标在全屏幕模式 - 的Flex 3.0
- 20. 全屏Windows与Tkinter
- 21. 如何在iPhone上创建全屏模态状态显示?
- 22. 显示NSWindow在全屏
- 23. 如何仅在移动模式下以全屏模式显示图像?
- 24. 如何显示启动全屏幕上,并在纵向模式下
- 25. 模式的看法有了全屏当前上下文显示在iOS的8
- 26. Android全屏显示
- 27. 显示屏全PHTH
- 28. 全屏模式在Materializecss
- 29. 使用XNA在多个显示器上全屏显示
- 30. 在iOS的外部显示器上显示全屏
注意:''root.overrideredirect(True)'''不会在我的机器上调用任何东西(Ubuntu)。没有'root.overrideredirect'就会显示标题栏。 –
jfs
这对我不起作用。它唯一做的事情是最大化窗口。 – exhuma
这不是全屏,但最大化...不完全相同,对于真正的全屏,请参阅@Shule的答案 – dm76