我正在阅读教程也在做一些测试。我正在尝试从列表中加载一个 img URL,并在网格视图中显示它们。
我还没有使用 gridview,但我应该能够用 x 和 y 显示它。使用下面的代码,我不明白为什么当我将 load_cover 放入函数时,它没有加载。但如果我只有 1 张图片,并放入 window() 函数,则 1 张图片将被加载。
我也试过用一个按钮连接 load_cover() 函数,但图像不显示。我想念加载顺序吗?
代码:
import sys
import requests
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QMessageBox
from PyQt5.QtGui import QIcon, QPixmap, QImage
from PyQt5.QtCore import pyqtSlot
def window():
app = QApplication(sys.argv)
widget = QWidget()
#Text label
textLabel = QLabel(widget)
textLabel.setText("Hello World!")
textLabel.move(110,85)
load_cover()
#Button
n_pagebtn = QPushButton(widget) #Next page
n_pagebtn.setText("Next Page")
n_pagebtn.move(840,850)
n_pagebtn.clicked.connect(Next_Page_Clicked)
p_pagebtn = QPushButton(widget) #Pervious page
p_pagebtn.setText("Pervious Page")
p_pagebtn.move(720,850)
p_pagebtn.clicked.connect(Pervious_Page_Clicked)
about_btn = QPushButton(widget) #About
about_btn.setText("About")
about_btn.move(30,850)
about_btn.clicked.connect(About_Clicked)
#Main window
widget.setGeometry(50,50,1680,900)
widget.setWindowTitle("PyQt5 Example")
widget.show()
sys.exit(app.exec_())
def About_Clicked():
print("About")
msgBox = QMessageBox()
msgBox.setIcon(QMessageBox.Information)
msgBox.setText("Message box pop up window")
msgBox.setWindowTitle("QMessageBox Example")
msgBox.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
msgBox.buttonClicked.connect(about_msg)
returnValue = msgBox.exec()
if returnValue == QMessageBox.Ok:
print('OK clicked')
def about_msg():
print("cancel clicked")
def Next_Page_Clicked():
print("Next page")
def Pervious_Page_Clicked():
print("Pervious page")
def load_cover():
imgurl = ['http://photocdn.sohu.com/20120128/Img333056814.jpg', 'https://doc.qt.io/archives/qt-4.8/images/qimage-scaling.png', 'https://doc.qt.io/archives/qt-4.8/images/brush-styles.png']
x = 10
y = 10
for i in imgurl:
res = requests.get(i)
img = QImage.fromData(res.content)
img = img.scaled(128, 64, aspectRatioMode= 2)
l1 = QLabel()
l1.setPixmap(QPixmap.fromImage(img))
l1.move(x,y)
x = x + 10
y = y + 10
if __name__ == '__main__':
window()