求教如何再pyside6中展示图片?
求教如何再pyside6中展示图片?隐藏展示图片的主界面外框。
图片展示持续指定时间后,消失。
求大神给出思路和方案。
在 PySide6(Qt for Python)中展示图片,可以使用 QLabel 控件和 QPixmap 类来实现。你可以创建一个自定义的窗口,设置透明度,然后在指定时间后关闭窗口。这里是一个简单的实现方案:
首先,请确保已经安装了 PySide6:
pip install pyside6
然后,创建一个名为 image_viewer.py 的文件,并添加以下代码:
import sys
from PySide6.QtCore import Qt, QTimer
from PySide6.QtGui import QPixmap
from PySide6.QtWidgets import QApplication, QLabel, QMainWindow
class ImageViewer(QMainWindow):
def __init__(self, image_path, display_time_ms, parent=None):
super(ImageViewer, self).__init__(parent)
self.image_label = QLabel(self)
self.setCentralWidget(self.image_label)
self.display_image(image_path)
# 设置窗口无边框,背景透明
self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
self.setAttribute(Qt.WA_TranslucentBackground)
# 设置图片显示持续时间
QTimer.singleShot(display_time_ms, self.close)
def display_image(self, image_path):
pixmap = QPixmap(image_path)
self.image_label.setPixmap(pixmap)
self.image_label.setScaledContents(True)
self.resize(pixmap.size())
if __name__ == '__main__':
app = QApplication(sys.argv)
image_path = 'path/to/your/image.png'# 请将此处替换为你的图片路径
display_time_ms = 5000# 显示图片的时间,单位为毫秒
viewer = ImageViewer(image_path, display_time_ms)
viewer.show()
sys.exit(app.exec())
将 path/to/your/image.png 替换为你要显示的图片的路径,并设置 display_time_ms 为你想要显示的时间(单位为毫秒)。
运行上面的代码,你会看到一个无边框窗口显示图片,持续指定的时间后消失。为了运行代码,可以在命令行中执行:
python image_viewer.py
这个方案应该可以满足你的需求。请尝试修改代码以满足其他特定需求。 展示图片可以使用QLabel控件,并设置其背景图片。隐藏外框可以使用setFrameShape方法将边框设置为无边框。展示图片持续指定时间后消失可以使用QTimer控件,设置定时器时间后,在定时器时间到达时隐藏图片。
以下是示例代码:
import sys
from PySide6.QtCore import QTimer
from PySide6.QtGui import QPixmap
from PySide6.QtWidgets import QApplication, QLabel, QMainWindow
class ImageWindow(QMainWindow):
def __init__(self, image_path, duration=5000):
super().__init__()
self.image_path = image_path
self.duration = duration
self.initUI()
def initUI(self):
# 创建QLabel控件,并设置背景图片
label = QLabel(self)
pixmap = QPixmap(self.image_path)
label.setPixmap(pixmap)
# 隐藏外框
label.setFrameShape(QLabel.NoFrame)
# 调整窗口大小为图片大小
self.resize(pixmap.width(), pixmap.height())
# 创建定时器,持续指定时间后隐藏图片
timer = QTimer(self)
timer.setSingleShot(True)
timer.timeout.connect(label.hide)
timer.start(self.duration)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = ImageWindow('image.jpg', 5000)
window.show()
sys.exit(app.exec())
在上述代码中,ImageWindow类为展示图片的主窗口,其初始化方法中创建了一个QLabel控件,并设置其背景图片、隐藏外框和调整窗口大小。同时创建了一个定时器,持续指定时间后隐藏图片。在main函数中创建ImageWindow实例并显示窗口。 isdkz 发表于 2023-3-24 20:27
在 PySide6(Qt for Python)中展示图片,可以使用 QLabel 控件和 QPixmap 类来实现。你可以创建一个自定义 ...
大神你好,问题基本解决。但还想再追问一下,如果图片小时候,我还需要继续展示其他的程序界面怎么办?
就像用pycharm程序,打开后显示弹出一个prcharm的图片,显示几秒后消失,出现了程序的主界面。 isdkz 发表于 2023-3-24 20:27
在 PySide6(Qt for Python)中展示图片,可以使用 QLabel 控件和 QPixmap 类来实现。你可以创建一个自定义 ...
我的想法是再定义两个界面的类,第一个类用你刚才发的代码实现展示图片和指定时间消失。
但是怎么自动运行到第二个界面的类? 子飞鱼 发表于 2023-3-24 21:05
大神你好,问题基本解决。但还想再追问一下,如果图片小时候,我还需要继续展示其他的程序界面怎么办?
...
为了实现这个功能,你可以将上面提供的 ImageViewer 类作为一个启动画面使用,并在启动画面关闭后显示你的主程序界面。以下是一个简单的示例:
首先,我们需要创建一个新的主窗口类,用于显示你的程序的主要界面。在本例中,我们将使用一个简单的 QMainWindow,但你可以根据需要自定义这个类:
from PySide6.QtWidgets import QMainWindow
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setWindowTitle('主程序界面')
# 在这里添加其他界面组件和布局
然后,我们需要修改 ImageViewer 类,使其在关闭时发出一个信号。这可以通过在类中添加一个自定义信号并在 closeEvent 方法中发出它来实现:
from PySide6.QtCore import Signal
class ImageViewer(QMainWindow):
# 定义一个自定义信号,当启动画面关闭时发出
closed = Signal()
...
def closeEvent(self, event):
# 当窗口关闭时发出信号
self.closed.emit()
super(ImageViewer, self).closeEvent(event)
最后,修改主程序入口,首先显示启动画面,然后在启动画面关闭后显示主程序界面:
if __name__ == '__main__':
app = QApplication(sys.argv)
image_path = 'path/to/your/image.png'# 请将此处替换为你的图片路径
display_time_ms = 5000# 显示图片的时间,单位为毫秒
viewer = ImageViewer(image_path, display_time_ms)
main_window = MainWindow()
def show_main_window():
main_window.show()
viewer.deleteLater()
viewer.closed.connect(show_main_window)
viewer.show()
sys.exit(app.exec())
这样,在启动画面显示指定时间后关闭时,主程序界面将显示出来。
注意:在这个示例中,我们使用了 deleteLater 方法来在启动画面关闭后释放它占用的资源。这样做是因为我们在启动画面关闭后不再需要它。如果你希望在程序运行期间重复使用启动画面,你可以选择不使用 deleteLater 方法。 isdkz 发表于 2023-3-24 21:25
为了实现这个功能,你可以将上面提供的 ImageViewer 类作为一个启动画面使用,并在启动画面关闭后显示你 ...
{:5_106:}{:5_106:} 大神你真厉害,谢谢!
能推荐一个pyside6的完整视频教程么?文字版的也行,主要是容易接受,全面介绍功能。
我掌握的都比较零散,没有系统化。 子飞鱼 发表于 2023-3-25 07:33
大神你真厉害,谢谢!
能推荐一个pyside6的完整视频教程么?文字版的也行,主要是容 ...
pyside6我也没有什么教程可推荐的,我觉得最好的学习方式就是看官方文档
https://doc.qt.io/qtforpython/
页:
[1]