2016-09-22 45 views
5

Chciałbym stworzyć przeglądarkę obrazów, która wyświetla ładnie i równomiernie rozmieszczone miniatury, na rodzimej przeglądarce plików.qt5 (i python) - Jak uzyskać domyślny rozmiar miniaturki użytkownika os

Na oknach, mam nadzieję, że to wyglądać podobnie do tego:

enter image description here

na Ubuntu, mam nadzieję, że to wyglądać podobnie do tego:

enter image description here

Ale to jest to, co jest teraz dostępne:

thumbnail sized are different from default size

Jednym z problemów, przed którymi stoję, jest określenie prawidłowego rozmiaru miniatur dla obrazów. Rozumiem, że mogę ustawić rozmiar miniatury programowo za pomocą kodu self.setIconSize(QSize(32, 32)), jednak ustawienie rozmiaru miniatury w ten sposób może spowodować, że rozmiary będą niezgodne z domyślnym ustawieniem systemu, co sprawi, że będzie wyglądać nienaturalnie.

Więc moje pytanie brzmi: W jaki sposób mogę uzyskać „domyślnego rozmiaru miniatur”, który jest ustawiony na pulpicie użytkownika, aby mój wygląd miniatur zgodne z OS użytkownika (przy użyciu qt5 a dokładniej PySide2 lub PyQt5)?

Oto kod pracuję z tak daleko: `

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

Co sprawia, że ​​myślisz, że istnieje domyślny rozmiar systemu? Nie widzę żadnych dowodów na to w twoim pytaniu. A w każdym razie, dlaczego nie możesz po prostu pozwolić użytkownikowi wybrać rozmiar dla siebie (co prawdopodobnie robią wszystkie inne aplikacje)? – ekhumoro

+1

Przykładem może być użytkownik ubuntu, po otwarciu jego folderu "Pictures", spotyka się miniaturowe wersje dowolnych zdjęć w tym folderze. Przedstawiono mu jednolitą wielkość _default_ dla tych miniatur.Ubuntu nie otwiera okna dialogowego, które wymaga od użytkownika wprowadzenia rozmiaru, jaki ma mieć jego miniatury, zanim zostanie pokazana miniaturka jego folderu. To samo dotyczy użytkowników systemu Windows. Użytkownicy systemu Windows mają miniaturki o domyślnym rozmiarze _uniform_, nawet bez uprzedniego poproszenia użytkownika o określenie, jaki ma być rozmiar jego miniaturek. –

+1

Ale to nie pokazuje, że istnieje domyślny rozmiar ** systemu **. Każda aplikacja po prostu działa sama. – ekhumoro

Odpowiedz

1

wiem, że jestem chyba trochę za późno, aby pomóc odpowiadając na to, ale uważam, że szukasz na to z niewłaściwego podejścia.
Jak powiedzieli inni, nie ma technicznie "domyślnego rozmiaru" dla miniatur zdjęć. Miniatury są wyświetlane w programie do zarządzania plikami (Windows Explorer, Nautilus itp.), Co decyduje o wielkości miniatur. Nie ten system.

Oba powyższe programy dają użytkownikowi możliwość dostosowania rozmiaru miniatur, więc nawet jeśli istniało domyślne ustawienie systemu, preferowany przez użytkownika rozmiar nie byłby uniwersalny.

Co możesz zrobić, to otworzyć domyślny menedżer plików obok GUI i porównać rozmiary ikon. Jeśli twój jest mniejszy niż domyślny menedżer plików, dostosuj rozmiar ikony w swoim kodzie (w sposób opisany powyżej) i porównaj ponownie. Kiedy wyglądają wystarczająco blisko tego samego rozmiaru, aby je dopasować, jest to domyślny rozmiar. Jeśli chcesz dać użytkownikowi opcję dostosowania rozmiaru, dodaj opcje, aby je dostosować, a następnie zapisz nowy rozmiar jako rozmiar ikony, który jest inicjowany podczas uruchamiania aplikacji, umożliwiając użytkownikowi wybór własnego domyślnego rozmiaru.

Oprócz tego nie sądzę, że istnieje sposób na pobranie rozmiaru ikony z domyślnego menedżera plików.

+0

Dzięki za poświęcenie czasu na odpowiedź. Masz rację. Skończyło się na zastosowaniu rozwiązania podobnego do tego, co powiedziałeś. Zamiast jednak powolnego porównywania rozmiaru ikon z domyślnymi GUI, a następnie ponownego dostosowywania krok po kroku, postanowiłem użyć wartości ustawionych tutaj: http://www.visualpharm.com/articles/icon_sizes.html. Zasadniczo, gdy użytkownik otwiera aplikację, rozmiary ikon są ustawione na 48 x 48 dla Windows i Linux. Następnie użytkownik może dostosować rozmiary ikon w oparciu o różne rozmiary wyszczególnione w powyższym łączu. –