Fix weird bug with images in ImageLabel
This commit is contained in:
parent
e7038be33a
commit
374e8193ac
|
@ -1,13 +1,9 @@
|
||||||
import io
|
import json
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
|
||||||
|
|
||||||
from PIL import Image
|
|
||||||
from PIL.ImageQt import ImageQt
|
|
||||||
from PyQt5 import QtGui
|
from PyQt5 import QtGui
|
||||||
from PyQt5.QtCore import pyqtSignal, QSettings, Qt, QUrl, QJsonParseError, QJsonDocument
|
from PyQt5.QtCore import pyqtSignal, QUrl, QJsonParseError, QJsonDocument
|
||||||
from PyQt5.QtGui import QPixmap
|
|
||||||
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply
|
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply
|
||||||
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel
|
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel
|
||||||
|
|
||||||
|
@ -55,37 +51,8 @@ class GameWidget(QWidget):
|
||||||
logger.info(", ".join([img["type"] for img in json_info["keyImages"]]))
|
logger.info(", ".join([img["type"] for img in json_info["keyImages"]]))
|
||||||
# print(json_info["keyImages"])
|
# print(json_info["keyImages"])
|
||||||
|
|
||||||
save = QSettings().value("cache_images", True, bool)
|
|
||||||
if os.path.exists(p := os.path.join(self.path, f"{json_info['title']}_wide.png")) and save:
|
|
||||||
self.image.setPixmap(QPixmap(p)
|
|
||||||
.scaled(self.width, int(self.width * 9 / 16), transformMode=Qt.SmoothTransformation))
|
|
||||||
else:
|
|
||||||
for img in json_info["keyImages"]:
|
|
||||||
if img["type"] in ["DieselStoreFrontWide", "VaultClosed"]:
|
|
||||||
if img["type"] == "VaultClosed" and self.title != "Mystery Game":
|
|
||||||
continue
|
|
||||||
self.image_request = self.manager.get(QNetworkRequest(QUrl(img["url"])))
|
|
||||||
self.image_request.finished.connect(lambda: self.image_ready(save))
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
# No image found
|
|
||||||
logger.error(f"No image found for {self.title}")
|
|
||||||
|
|
||||||
self.setLayout(self.layout)
|
self.setLayout(self.layout)
|
||||||
|
|
||||||
def image_ready(self, save: bool):
|
|
||||||
if self.image_request:
|
|
||||||
if self.image_request.error() == QNetworkReply.NoError:
|
|
||||||
data = self.image_request.readAll().data()
|
|
||||||
image: Image.Image = Image.open(io.BytesIO(data))
|
|
||||||
image = image.resize((self.width, int(self.width * 9 / 16)))
|
|
||||||
|
|
||||||
if save:
|
|
||||||
image.save(os.path.join(self.path, self.json_info["title"] + "_wide.png"), format="png")
|
|
||||||
pixmap = QPixmap()
|
|
||||||
pixmap.fromImage(ImageQt(image))
|
|
||||||
self.image.setPixmap(pixmap)
|
|
||||||
|
|
||||||
def mousePressEvent(self, a0: QtGui.QMouseEvent) -> None:
|
def mousePressEvent(self, a0: QtGui.QMouseEvent) -> None:
|
||||||
self.show_info.emit(self.json_info)
|
self.show_info.emit(self.json_info)
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,6 @@ class ShopGame:
|
||||||
tmp.links.append(tuple((item.replace("link", ""), links[item])))
|
tmp.links.append(tuple((item.replace("link", ""), links[item])))
|
||||||
tmp.available_voice_langs = api_data["data"]["requirements"].get("languages", "Failed")
|
tmp.available_voice_langs = api_data["data"]["requirements"].get("languages", "Failed")
|
||||||
tmp.reqs = {}
|
tmp.reqs = {}
|
||||||
print(api_data["data"]["requirements"])
|
|
||||||
for i, system in enumerate(api_data["data"]["requirements"].get("systems", [])):
|
for i, system in enumerate(api_data["data"]["requirements"].get("systems", [])):
|
||||||
try:
|
try:
|
||||||
tmp.reqs[system["systemType"]] = {}
|
tmp.reqs[system["systemType"]] = {}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import io
|
import io
|
||||||
import os
|
import os
|
||||||
|
from logging import getLogger
|
||||||
|
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
from PIL.ImageQt import ImageQt
|
|
||||||
from PyQt5.QtCore import Qt, QRect, QSize, QPoint, pyqtSignal, QUrl, QSettings
|
from PyQt5.QtCore import Qt, QRect, QSize, QPoint, pyqtSignal, QUrl, QSettings
|
||||||
from PyQt5.QtGui import QMovie, QPixmap
|
from PyQt5.QtGui import QMovie, QPixmap
|
||||||
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply
|
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply
|
||||||
|
@ -13,6 +13,7 @@ from qtawesome import icon
|
||||||
from rare import style_path
|
from rare import style_path
|
||||||
from rare.ui.utils.pathedit import Ui_PathEdit
|
from rare.ui.utils.pathedit import Ui_PathEdit
|
||||||
|
|
||||||
|
logger = getLogger("ExtraWidgets")
|
||||||
|
|
||||||
class FlowLayout(QLayout):
|
class FlowLayout(QLayout):
|
||||||
def __init__(self, parent=None, margin=-1, hspacing=-1, vspacing=-1):
|
def __init__(self, parent=None, margin=-1, hspacing=-1, vspacing=-1):
|
||||||
|
@ -284,18 +285,24 @@ class ImageLabel(QLabel):
|
||||||
self.show_image()
|
self.show_image()
|
||||||
|
|
||||||
def image_ready(self):
|
def image_ready(self):
|
||||||
|
self.setPixmap(QPixmap())
|
||||||
if self.request:
|
if self.request:
|
||||||
if self.request.error() == QNetworkReply.NoError:
|
if self.request.error() == QNetworkReply.NoError:
|
||||||
|
|
||||||
data = self.request.readAll().data()
|
data = self.request.readAll().data()
|
||||||
image: Image.Image = Image.open(io.BytesIO(data))
|
image: Image.Image = Image.open(io.BytesIO(data))
|
||||||
image = image.resize((self.img_size[0], self.img_size[1]))
|
image = image.resize((self.img_size[0], self.img_size[1]))
|
||||||
|
|
||||||
if QSettings().value("cache_images", True, bool):
|
if QSettings().value("cache_images", True, bool):
|
||||||
image.save(os.path.join(self.path, self.name), format="png")
|
image.save(os.path.join(self.path, self.name), format="png")
|
||||||
|
byte_array = io.BytesIO()
|
||||||
|
image.save(byte_array, format="PNG")
|
||||||
|
# pixmap = QPixmap.fromImage(ImageQt(image))
|
||||||
pixmap = QPixmap()
|
pixmap = QPixmap()
|
||||||
pixmap.fromImage(ImageQt(image))
|
pixmap.loadFromData(byte_array.getvalue())
|
||||||
|
# pixmap = QPixmap.fromImage(ImageQt.ImageQt(image))
|
||||||
self.setPixmap(pixmap)
|
self.setPixmap(pixmap)
|
||||||
|
else:
|
||||||
|
logger.error(self.request.errorString())
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue