图片和布局

时间:2021-02-24 06:37:23

标签: python pyqt5

我正在阅读教程也在做一些测试。我正在尝试从列表中加载一个 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()

0 个答案:

没有答案
相关问题