2016-09-22 55 views
5

Tôi đang tìm cách tạo trình duyệt hình ảnh hiển thị hình thu nhỏ đẹp mắt và đồng đều, trên trình duyệt tệp gốc.qt5 (và python) - Cách lấy kích thước hình thu nhỏ mặc định của os của người dùng

Trên cửa sổ, tôi hy vọng nó sẽ giống như thế này:

enter image description here

On ubuntu, tôi hy vọng nó sẽ giống như thế này:

enter image description here

Nhưng đây là những gì hiện có sẵn:

thumbnail sized are different from default size

Một trong những vấn đề tôi đang gặp phải là chỉ định kích thước hình thu nhỏ chính xác cho hình ảnh. Tôi hiểu rằng tôi có thể đặt kích thước hình thu nhỏ bằng cách sử dụng mã self.setIconSize(QSize(32, 32)), tuy nhiên, việc đặt kích thước hình thu nhỏ theo cách này có thể dẫn đến kích thước không phù hợp với mặc định của hệ thống, làm cho nó trông không tự nhiên.

Vì vậy, câu hỏi của tôi là: Làm thế nào để có được "kích thước thumbnail mặc định" được thiết lập trên máy tính để bàn của người dùng, để làm xuất hiện hình ảnh thu nhỏ của tôi phù hợp với os của người dùng (sử dụng qt5 hay cụ thể hơn PySide2 hoặc PyQt5)?

Dưới đây là đoạn code tôi đang làm việc với rất xa: '

import sys 
from PySide2.QtCore import QSize 
from PySide2.QtGui import QIcon 
from PySide2.QtWidgets import QApplication, QListWidget, QListWidgetItem, QMainWindow 

class ThumbsWindow(QListWidget): 
    def __init__(self, *args, **kwargs): 
     super().__init__(*args, **kwargs) 
     self.initUI() 

    def initUI(self): 
     self.setViewMode(QListWidget.IconMode) 
     self.setIconSize(QSize(32, 32)) 

     myimage_path = "./images/web.png" 
     myimage_path1 = "./images/image1.jpg" 
     myimage_path2 = "./images/image2.jpg" 
     myimage_path3 = "./images/image3.jpg" 

     image_list = [myimage_path, myimage_path1, myimage_path2, myimage_path3] 
     # create a list of QIcons 
     image_items = [QListWidgetItem(QIcon(path_x), "sample image") for path_x in image_list] 

     # add each of the QIcons onto the QListWidget 
     for image_item in image_items: 
      self.addItem(image_item) 


class Example(QMainWindow): 
    def __init__(self): 
     super().__init__() 
     self.initUI() 

    def initUI(self): 
     t = ThumbsWindow() 
     self.setCentralWidget(t) 

     self.resize(400, 300) 
     self.setWindowTitle('Image Thumbnails') 
     self.show() 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 

'

+1

Điều gì khiến bạn nghĩ rằng có kích thước hệ thống mặc định? Tôi không thấy bất kỳ bằng chứng nào cho câu hỏi của bạn. Và trong mọi trường hợp, tại sao bạn không thể cho phép người dùng chọn kích thước cho chính họ (có lẽ đó là những gì tất cả các ứng dụng khác làm)? – ekhumoro

+1

Một ví dụ sẽ là một người dùng ubuntu, khi mở thư mục "Hình ảnh" của mình, được đáp ứng với các phiên bản hình thu nhỏ của bất kỳ hình ảnh nào trong thư mục đó. Ông được trình bày với một kích thước _default_ thống nhất cho những ngón tay cái.Ubuntu không bật mở một hộp thoại yêu cầu người dùng nhập kích thước mà anh ta muốn hình thu nhỏ của mình, trước khi được hiển thị nội dung hình thu nhỏ của thư mục của anh ấy. Điều tương tự với người dùng windows. Người dùng Windows được trình bày với hình thu nhỏ có kích thước mặc định _uniform_, ngay cả khi không yêu cầu người dùng chỉ định những gì anh ta muốn kích thước của hình thu nhỏ của mình. –

+1

Nhưng điều đó không cho thấy rằng có kích thước ** hệ thống ** mặc định. Mỗi ứng dụng chỉ làm việc riêng của nó. – ekhumoro

Trả lời

1

Tôi biết tôi có thể là một chút muộn để giúp đỡ bằng cách trả lời này, nhưng tôi tin rằng bạn đang tìm kiếm tại đây theo cách tiếp cận sai.
Như những người khác đã nói không có kích thước "mặc định hệ thống" cho hình thu nhỏ của hình ảnh. Các hình thu nhỏ được hiển thị trên một chương trình quản lý tập tin (Windows Explorer, Nautilus, vv) mà là những gì dictates kích thước của hình thu nhỏ. Không phải hệ thống.

Cả hai chương trình trên đều cung cấp cho người dùng khả năng điều chỉnh kích thước của hình thu nhỏ, vì vậy ngay cả khi có cài đặt hệ thống mặc định, một người dùng sẽ không phổ biến.

Điều bạn có thể muốn làm là mở trình quản lý tệp mặc định bên cạnh GUI và so sánh kích thước biểu tượng. Nếu máy của bạn nhỏ hơn trình quản lý tệp mặc định, hãy điều chỉnh kích thước biểu tượng trong mã của bạn (cách bạn đăng ở trên) và so sánh lại. Khi họ nhìn gần đủ để cùng kích thước cho bạn, đó là kích thước mặc định của bạn. Nếu bạn muốn cung cấp cho người dùng tùy chọn điều chỉnh kích thước, hãy thêm tùy chọn để điều chỉnh kích thước và sau đó lưu kích thước mới làm kích thước biểu tượng được khởi tạo khi ứng dụng được khởi động, cho phép người dùng chọn kích thước mặc định của riêng họ.

Bên cạnh đó, tôi không tin rằng có một cách để kéo kích thước biểu tượng từ trình quản lý tệp mặc định.

+0

Cảm ơn bạn đã dành thời gian trả lời. Bạn đúng. Tôi đã kết thúc bằng cách sử dụng một giải pháp tương tự như những gì bạn nói. Nhưng thay vì từ từ so sánh kích thước biểu tượng với GUI mặc định, sau đó điều chỉnh từng bước, tôi quyết định sử dụng các giá trị đặt trước được tìm thấy ở đây thay vào đó: http://www.visualpharm.com/articles/icon_sizes.html. Về cơ bản, khi người dùng mở ứng dụng, kích thước biểu tượng được đặt thành 48 x 48 cho cửa sổ và linux. Sau đó, người dùng có thể điều chỉnh kích thước biểu tượng dựa trên các kích thước khác nhau được liệt kê trong liên kết ở trên. –

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