2010-10-01 44 views
9

Tôi có một tập lệnh sử dụng Tkinter để bật lên một cửa sổ có tin nhắn. Làm cách nào để đảm bảo nó tập trung để người dùng không bỏ lỡ và rõ ràng phải loại bỏ cửa sổ. mã là:Làm cho tiện ích Tkinter lấy nét

root = Tk() 
to_read = "Stuff" 
w = Label(root, text=to_read) 
w.pack() 
root.mainloop() 

Trả lời

14

Bạn có thể sử dụng phương pháp focus_force. Thấy như sau:

Nhưng lưu ý các tài liệu:

w.focus_force()

Buộc tập trung đầu vào cho các widget. Điều này là bất lịch sự. Tốt hơn là hãy chờ người quản lý cửa sổ cung cấp cho bạn tiêu điểm. Xem thêm .grab_set_global() bên dưới.

Cập nhật: Nó sẽ hoạt động trên root. Ví dụ: hãy thử chạy mã sau. Nó sẽ tạo một cửa sổ và bạn có thể chuyển tiêu điểm. Sau 5 giây, nó sẽ cố gắng lấy nét.

from Tkinter import * 

root = Tk() 
root.after(5000, lambda: root.focus_force()) 
root.mainloop() 
+0

lệnh là ok, nhưng nơi nào nó đi trong mã của tôi? Có vẻ như định dạng của tôi sẽ là root.focus_force, nhưng nó đưa ra một lỗi thuộc tính. – Ali

+1

@Ali: Tôi đã cập nhật câu hỏi để trả lời nhận xét của bạn. – ars

+0

có vẻ như nó đang hoạt động. Tôi đã bỏ qua chức năng .after. cảm ơn. – Ali

1

gì làm việc cho tôi là:

root.wm_attributes("-topmost", 1) 
root.focus_force() 

Tôi thấy điều này và một số cách khác để làm điều đó trong win32 here

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