2014-10-09 244 views
0

有人用Python编写了一个非常简单的“paint”程序,我想稍微修改一下。我的一些问题是。如何实现这个程序的旋转功能?我希望能够将程序以90度表示的窗口旋转到右侧。这可能吗?也可以实现一个功能从窗口中删除边框。 (这是我正在谈论的gui窗口)。Python Tkinter旋转窗口,右转

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() 

回答

1

解决的办法是只需旋转Linux中的画面。我设法用命令做到这一点:

xrandr --output HDMI1 --rotate right 
1

'旋转'您的屏幕,以便屏幕的不同边缘被视为顶部边缘,这是操作系统必须执行的操作。例如,在Win 7上,右键单击屏幕,选择分辨率,然后选择方向。选择是横向(正常),纵向(左边缘,从横向开始)为顶部),倒立横向和倒立纵向。即使屏幕是而不是物理旋转 - 但有点奇怪,因为光标移动假定屏幕旋转。

+0

你确定这是不可能的Linux呢?可以在Linux中为几个程序旋转窗口。一个例子是mplayer,如果你从终端用'mplayer rotate = 1'启动程序,整个窗口将向右旋转90度,而操作系统中的其他所有内容保持不变。 – 2014-10-09 08:21:00

+0

嗯。我确信的是,库手册中的当前tkinter章节不包含'rotate',并且pydoc生成的函数签名页面仅包含'rotate'作为Canvas.postscript的参数。所以我确信tkinter不能独立旋转其中一个窗口。 – 2014-10-10 17:21:06

1

为什么你想要旋转窗口?仅仅是因为几何?如果是这样,你可以调整画布的大小,使其在创建时使用宽度和高度参数进行旋转(或使用创建后的配置)

并删除边框(以及标题栏它),你可以使用:

root.overrideredirect(True) 

main()

+0

这是因为我尝试为Kiosk开发一个简单的绘画程序。售货亭上的屏幕旋转90度,因此程序必须随其转动。去除边界是一个很好的解决方案(我也计划这样做),但是它有一个障碍。 如果我有这样的'menubar.add_command(label =“Reset Image”,command = restart_program)''它会出现在左边,并且没有与窗口“旋转”。 – 2014-10-09 09:05:11

+0

好像我可以用'anchor'选项来改变它。 – 2014-10-09 09:27:22

+0

好吧,我明白你的意思了,你看过你的linux发行版的文档,看看是否有一个选项来旋转整个屏幕输出?它是很多显卡的常见功能,并且某些操作系统的功能也支持此功能,看起来这可能是最简单的选项,但我猜测您正在使用触摸屏?所以不知道会做什么,我认为这将需要重新配置匹配.. – 2014-10-09 09:37:28