2010-10-21 29 views
7

Python 2.7 (32-bit) Windows: Chúng tôi đang thử nghiệm với sự hỗ trợ của Python 2.7 cho Tkinter theo chủ đề (ttk) cho GUI đơn giản và đã trở nên rất ấn tượng !! Một lĩnh vực mà hỗ trợ chủ đề mới dường như đã đi lên ngắn là cách các hộp thoại phổ biến cụ thể của hệ điều hành được bao bọc.Python 2.7: Giao diện tkinter theo chủ đề "hộp thoại chung" thông qua Ttk?

Đã sửa: Nói cách khác, các hộp thoại phổ biến có nút "tròn"/"gradient" thường xuất hiện trên các hộp thoại phổ biến dưới XP, Vista, và Windows 7. (Tôi đang thử nghiệm trên cả 3 nền tảng có kết quả giống hệt nhau, không theo chủ đề).

Lưu ý: Các hộp thoại phổ biến được phân loại (askopenfilename, askopenfilenames, asksaveasfilename, askdirectory) đều được theo chủ đề đúng cách.

import tkMessageBox as messagebox 
messagebox.showinfo() 

import tkColorChooser as colorchooser 
color = colorchooser.askcolor(parent=root, title='Customize colors') 

Bất kỳ ý tưởng về những gì cần thiết để có được Tkinter của MessageBoxColorChooser hộp thoại thông thường là hệ điều hành chủ đề tương thích (ít nhất là trong môi trường Windows XP hoặc cao hơn)?

+0

Đây là một sự bắt tuyệt vời. Tôi sẽ mang nó đến Bug Tracker tại Python và xem chúng ta có thể thực hiện một số tiến triển hay không. –

+0

Rafe: Cảm ơn bạn đã cập nhật Trình theo dõi lỗi Python với sự cố này. Tôi sẽ rất sẵn lòng giúp khắc phục vấn đề này. Tôi không chắc chắn những gì tôi có thể đóng góp mã khôn ngoan, nhưng tôi sẽ được hạnh phúc để kiểm tra bất kỳ sửa chữa mã trên nhiều phiên bản của Windows, ví dụ như. XP, Vista, Windows 7. – Malcolm

+0

Đây là liên kết đến vấn đề này, bạn luôn có thể xem nguồn và xem liệu có cách nào để sửa nguồn không. Cách mọi thứ hoạt động, trong khi bạn không thể thực hiện mã đơn phương, bất kỳ ai cũng có thể viết các bản vá và yêu cầu họ xem xét. http://bugs.python.org/issue10171 –

Trả lời

2

Quan sát của bạn chủ yếu là chính xác. Tôi thấy những gì bạn đang đề cập đến trong số messageboxcolorchooser. Tuy nhiên, các bản thảo của tôi dường như có các nút tròn đúng cách, v.v.

Đề xuất của bạn cho bạn khi tạo hộp thư là tạo hộp thư của riêng bạn bằng cách sử dụng tiện ích TopLevel và sau đó xác định những gì bạn cần và hành vi thích hợp cho các nút khác nhau (nó chắc chắn khó hơn một chút so với chỉ sử dụng một hộp thư, nhưng nếu bạn thực sự cần các nút kiểu mới, nó sẽ hoạt động).

Tôi không nghĩ rằng bạn có thể cùng nhau giải quyết một vấn đề cho sự cố colorchooser.

Tôi mặc dù trong một phút có lẽ Python 3.1 đã khắc phục vấn đề này, nhưng thật đáng buồn, tôi đã thử và đó không phải là trường hợp. Tôi cho rằng nếu bạn cần người dùng chọn màu, các nút sẽ phải xấu.

+0

Rafe: Có, bạn chính xác ... các đệ đơn DO làm như mong đợi với sự hỗ trợ cho các nút theo chủ đề (làm tròn). Việc thiếu hỗ trợ chủ đề dường như bị giới hạn đối với hộp thoại hộp thoại và hộp thoại colorchooser. – Malcolm

+0

Tôi cũng nhận thấy sự kỳ quặc sau đây: Tất cả các tệp nội bộ (và trình chọn màu) hiển thị tương ứng với góc trên bên trái của cửa sổ chính ... EXCEPT hộp thoại askdirectory() nằm chính trên màn hình nền. – Malcolm

+0

@Malcolm: điều đó khá lạ. Tôi không nghĩ rằng tôi có thể nhận thấy điều đó một cách độc lập. –

0

Tùy chọn để có hộp thoại đẹp hơn là biên dịch tập lệnh của bạn thành tập lệnh thực thi bằng cách sử dụng pyinstaller. Tôi giải thích điều này thouroughly here.

tl; dr, có vẻ như biên dịch với pyinstaller cho phép bạn có hộp thoại với kiểu của hệ điều hành hiện đang chạy, nhưng không phải kiểu tùy chỉnh.

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