2013-12-07 32 views
7

Tôi có một ứng dụng Python Tkinter toàn màn hình không cần chuột - một phiên bản đơn giản là bên dưới. Nó mở toàn màn hình và kích hoạt tiện ích văn bản khi nhấn F1.Làm cách nào để ẩn hoặc tắt con trỏ chuột trong Tkinter?

import Tkinter as tk 

class App(): 
    def __init__(self): 
     self.root = tk.Tk() 
     self.root.attributes('-fullscreen', True) 
     self.root.configure(background='red') 
     self.root.bind('<F1>', self.opennote) 
     self.root.bind('<F2>', self.closenote) 
     self.root.bind('<F3>', self.quit) 
     l = tk.Label(text="some text here") 
     l.pack() 
     self.root.mainloop() 

    def opennote(self, event): 
     self.n = tk.Text(self.root, background='blue') 
     self.n.pack() 

    def closenote(self, event): 
     self.n.destroy() 

    def quit(self, event): 
     self.root.destroy() 

App() 

Khi khởi chạy, con trỏ chuột không hiển thị. Nó trở nên có thể nhìn thấy, mặc dù, sau khi khởi tạo các widget văn bản, và sau đó ở lại (thay đổi hình dạng giữa khung văn bản và phần còn lại của màn hình).

Tôi đã tìm thấy một số bài viết về cách ẩn con trỏ chuột (bằng cách sử dụng thông số cursor='') nhưng tôi không tìm thấy bất kỳ thứ gì có thể hoạt động cho con trỏ chuột trên các tiện ích.

Có thể ẩn hoàn toàn (hoặc tắt) con trỏ chuột trong Tkinter không?

(a question on how to set the mouse position giúp tôi di chuyển con trỏ này đi bằng cách phát hành một self.root.event_generate('<Motion>', warp=True, x=self.root.winfo_screenwidth(), y=self.root.winfo_screenheight()). Đây không phải là một giải pháp nhưng ít nhất con trỏ không nhảy vào khuôn mặt của một người từ giữa màn hình)

Trả lời

4

Gần nhất tôi có thể đến là tạo một Frame và đặt con trỏ thành 'none', nhưng nó vẫn có vấn đề yêu cầu con trỏ rời khỏi và nhập lại cửa sổ ứng dụng, ít nhất là trên máy của tôi (Mac OS X Mavericks). Có lẽ ai đó có thể tìm ra cách để kích hoạt các con trỏ đến biến mất khi tải ứng dụng, nhưng đây là đoạn code tôi có cho đến nay:

import Tkinter as tk 


class App(): 
    def __init__(self): 
     self.root = tk.Tk() 
     self.root.attributes('-fullscreen', True) 
     self.main_frame = tk.Frame(self.root) 
     self.main_frame.config(background='red', cursor='none') 
     self.main_frame.pack(fill=tk.BOTH, expand=tk.TRUE) 
     self.root.bind('<F1>', self.opennote) 
     self.root.bind('<F2>', self.closenote) 
     self.root.bind('<F3>', self.quit) 
     l = tk.Label(self.main_frame, text="some text here") 
     l.pack() 
     self.root.mainloop() 

    def opennote(self, event): 
     self.n = tk.Text(self.main_frame, background='blue') 
     self.n.pack() 

    def closenote(self, event): 
     self.n.destroy() 

    def quit(self, event): 
     self.root.destroy() 

App() 
16

tôi đoán,

root.config(cursor="none") nên làm việc.

+0

Làm việc cho tôi dưới cả Windows 10 và Ubuntu 16 – ChewToy

Các vấn đề liên quan