如何让 PyCharm 的 turtle 窗口总在最前
一大早,本科同学来电话说他儿子有 Python 编程问题解决不了,说是画图窗口老是在后面被遮挡,然后把代码用微信发来让我看看。
先把代码另存到本地,文件名为 d.py。
打开 Jupyter Lab
Jupyter Lab 是我最常用的 Python 编程环境,在浏览器里面就可以编程执行,非常方便。
把代码拷贝进去,执行,turtle 画图窗口出现并保持在最前,没问题。
Anaconda PowerShell Prompt
打开 Anaconda PowerShell Prompt 命令行界面,输入 python d.py
,回车,画图窗口顺利弹出在最前,没问题。
stem86.com
Stem86 学习平台带有 Python 的编程环境,里面的 turtle 画图是直接显示的,更没问题了。
Visual Studio Code
用 VS Code 打开 d.py,启动调试,发现 turtle 窗口没有在最前,需要手动切换,有问题了。
PyCharm
使用 PyCharm 免费的社区版打开 d.py,画图窗口也没有在最前。
解决方案
之前一直用 Jupyter Lab,还没有注意到这个问题,貌似在 VS Code 和 PyCharm 软件调试时会把弹出窗口放到后面,要解决的话就得从窗口的控制入手。
网上搜索了一番,找到如下代码:
import turtle
topwindow = turtle.Screen().getcanvas().winfo_toplevel()
topwindow.call('wm', 'attributes', '.', '-topmost', '1')
topwindow.call('wm', 'attributes', '.', '-topmost', '0')
turtle.Screen().title("我是窗口标题") # Set the window title
OK,问题解决了。
上面的代码可以简化如下:
# 窗口置顶
turtle.Screen().getcanvas().winfo_toplevel().attributes("-topmost", True)
# 窗口最大尺寸
turtle.Screen().getcanvas().winfo_toplevel().wm_maxsize(500,400)
# 窗口标题
turtle.Screen().getcanvas().winfo_toplevel().title("Helllooooooooo")
# 标题的最大化按钮不可用
turtle.Screen().getcanvas().winfo_toplevel().wm_resizable(False,False)
# 窗口透明度
turtle.Screen().getcanvas().winfo_toplevel().attributes("-alpha", 0.5)
# 工具栏标题模式
turtle.Screen().getcanvas().winfo_toplevel().attributes("-toolwindow", False)
# 窗口全屏模式
turtle.Screen().getcanvas().winfo_toplevel().attributes("-fullscreen",True)