2014-10-09 243 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