2010-10-22 34 views
6

Python 2.7 trong Windows: Làm thế nào chúng ta có thể kiểm soát vị trí của các hộp thoại chung của Tkinter?Python 2.7/Windows: Cách kiểm soát vị trí của các hộp thoại chung Tkinter?

Đây là những gì chúng tôi đã phát hiện ra:

  • Một số hộp thoại thông thường luôn luôn mở ra liên quan đến cửa sổ cha mẹ
  • Một số hộp thoại thông thường luôn luôn mở ra tập trung vào máy tính để bàn của người dùng
  • Tất cả các hộp thoại thông thường xuất hiện bỏ qua tùy chọn parent = parameter

Câu hỏi:

  • Làm cách nào để buộc hộp thoại mở ra tương đối so với cửa sổ chính?
  • Làm cách nào chúng tôi có thể buộc hộp thoại mở trung tâm trên màn hình của người dùng?

Bối cảnh:

import tkColorChooser as colorchooser 
import tkFileDialog as filedialog 
import tkMessageBox as messagebox 

; # always open up relative to parent windows 
fileOpen = filedialog.askopenfilename() 
fileOpens = filedialog.askopenfilenames() 
fileSaveAs = filedialog.asksaveasfilename() 
color  = colorchooser.askcolor() 

; # always open up centered on desktop 
folderOpen = filedialog.askdirectory() 
messagebox.askquestion() 

Cảm ơn bạn, Malcolm

Trả lời

1

Đối với các bảng thông báo của Windows bạn không thể. Nó xuất hiện ở giữa màn hình và đó là điều đó. Tuy nhiên, hộp thoại chọn tập tin và chọn màu là các hộp thoại hệ thống đã được cung cấp một trình bao bọc Tk để người dùng thấy các hộp thoại cổ phiếu trên nền tảng này. Nếu bạn thiết lập tùy chọn trong suốt thì điều này được chuyển qua các cửa sổ được bao bọc và nó sẽ tập trung vào chính nó qua điểm được chỉ định của bạn.

Trong Tk:

toplevel .t 
tk_chooseColor -parent .t

Làm thế nào bạn biến chúng thành Tkinter tôi để lại cho một người nào đó với một số kinh nghiệm Python.

Đối với việc định tâm các thành phần này, thành viên hwndOwner của cấu trúc CHOOSECOLOR luôn được đặt thành HWND cho một trong các điểm ghép đôi Tk của bạn. Để cho nó cha mẹ chống lại máy tính để bàn bạn cần phải vượt qua NULL ở đó và Tk không cho phép bạn. Bạn có thể mã nguồn phiên bản unix (lib/clrpick.tcl) và hiển thị thay vào đó, nhưng sau đó nó sẽ trông lạ trên màn hình Windows.

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