Zelle 和 Graphics.py - 如何使图形窗口始终位于顶部?

问题描述

使用 graphics.py,我想知道是否有办法将 graphics.py 画布/窗口一直保持在顶部。使用 pycharm 时,如果输入在 pycharm 中 - 图形将隐藏在应用程序后面。我在乌龟中找到了一种方法,但似乎无法将其合并到 graphics.py

这是乌龟:

rootwindow=turtle.getcanvas().winfo_toplevel()
rootwindow.call('wm','attributes','.','-topmost','1')

有什么想法可以在 Zelle's 中实现这一点吗?

这里有一个简单的例子,在pycharm中进入控制台时,图形窗口移动到pycharm后面而不是停留在上面

from graphics import *

win = GraphWin("MyWindow",200,200)

def cir(radius):
    cir = Circle(Point(30,30),radius)
    cir.setFill("red")
    cir.draw(win)
    return

radius=int(input("what size of circle?"))
cir(radius)
win.getMouse()
win.close()

解决方法

您可以按照与使用 turtle 模块基本相同的方式进行操作,稍微棘手的部分是确定根窗口是什么。至少有几种方法可以做到这一点,但我认为使用通用小部件方法 nametowidget() 是最干净的(注意:'.' 始终是 tkinter 中根的 window name ).

from graphics import *


win = GraphWin("MyWindow",200,200)
rootwindow = win.nametowidget('.')
rootwindow.call('wm','attributes','.','-topmost','1')

def cir(radius):
    cir = Circle(Point(30,30),radius)
    cir.setFill("red")
    cir.draw(win)
    return

radius = int(input("what size of circle?"))
cir(radius)
win.getMouse()
win.close()

推荐

在我看来,您最好学习如何使用 graphics 模块的 Entry 对象从用户那里获取键盘数据,因为这样您就不需要做一些像这个。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...