Python Tkinter 旋转窗口,向右转

0 投票
3 回答
4702 浏览
提问于 2025-04-26 12:17

有人用Python写了一个非常简单的“画图”程序,我想对它做一些修改。我有个问题,就是怎么在这个程序里实现一个旋转功能?我希望能够把程序显示的窗口向右旋转90度。这可能吗?另外,能不能实现一个功能,把窗口的边框去掉?(我说的是图形用户界面的窗口)。

from Tkinter import *

"""paint.py: not exactly a paint program.. just a smooth line drawing demo."""

b1 = "up"
xold, yold = None, None

def main():
    root = Tk()
    drawing_area = Canvas(root)
    drawing_area.pack()
    drawing_area.bind("<Motion>", motion)
    drawing_area.bind("<ButtonPress-1>", b1down)
    drawing_area.bind("<ButtonRelease-1>", b1up)
    root.mainloop()

def b1down(event):
    global b1
    b1 = "down"           # you only want to draw when the button is down
                          # because "Motion" events happen -all the time-

def b1up(event):
    global b1, xold, yold
    b1 = "up"
    xold = None           # reset the line when you let go of the button
    yold = None

def motion(event):
    if b1 == "down":
        global xold, yold
        if xold is not None and yold is not None:
            event.widget.create_line(xold,yold,event.x,event.y,smooth=TRUE)
                          # here's where you draw it. smooth. neat.
        xold = event.x
        yold = event.y

if __name__ == "__main__":
    main()
暂无标签

3 个回答

1

你为什么想要旋转窗口呢?是因为形状的问题吗?如果是这样的话,你可以通过调整画布的宽度和高度来让它看起来像是旋转过一样,这可以在创建画布的时候设置,或者在创建之后用配置来调整。

如果你想去掉边框(还有标题栏),可以使用下面的代码:

root.overrideredirect(True)

把这段代码放在你的 main() 函数里。

1

把你的屏幕“旋转”一下,就是把屏幕的不同边当作顶部来用,这个操作需要操作系统来完成。比如在Windows 7上,你可以右键点击屏幕,选择“分辨率”,然后选择“方向”。这里有几个选项:横屏(正常),竖屏(左边的边当作顶部),倒横屏和倒竖屏。即使屏幕没有实际旋转,这些选项也可以使用——不过这样有点奇怪,因为鼠标的移动是基于屏幕已经旋转的假设来进行的。

2

解决办法就是在Linux系统中旋转屏幕。我是通过下面这个命令来实现的:

xrandr --output HDMI1 --rotate right

撰写回答