PyQt6入门之用户档案GUI设计

本文介绍了如何使用PyQt6库来创建一个用户档案界面,包括设置用户图像、个人信息和布局。通过QLabel和QPixmap展示图像和文本信息,利用move()方法进行位置调整。程序创建了多个QLabel对象来显示用户的名字、简历、技能等详细信息。
摘要由CSDN通过智能技术生成

用户档案是用来直观地显示个人数据的。简介中的数据有助于将某些特征与该用户联系起来,并协助其他人更多地了解该个人。根据应用程序的目标,个人资料的信息和外观将发生变化。

用户档案通常有一些参数,这些参数要么是强制性的,要么是可选的,并允许某种程度的定制,以适应用户的喜好,如档案图片或背景颜色。它们中的许多都包含类似的功能,如用户的名字或 "关于 "部分。

用户档案的上半部分我们用QLabel部件实现用户图像的存放,下半部分使用多个QLabel部件存放用户的相关信息资料等。

本次程序在上一篇中进行修改,在创建setUpMainWindow()方法之前,我们先创建一个独立的方法createImageLabels()去加载不同的图片以及创建QLabel对象去显示对应的图片。

images列表包含了具体的文件位置,这些文件将被用于蓝色背景和窗口顶部的用户简介图像。使用for循环,遍历列表中的项目,为每个项目创建一个QLabel对象,实例化一个QPixmap对象,为标签设置pixmap,如果该图像是个人资料图像,则使用move()将其置于窗口的中心。使用move()和绝对定位,你可以很容易地将图像重叠起来,但你需要按照从最下面的图像到最上面的图像的顺序加载图像。

接下来,我们就可以创建MainWindow下的setUpMainWindow() 方法,并调用之前创建的createImageLabels()方法。

在图像标签被创建后,几个用于显示文本的QLabel对象被实例化。例如,user_label在窗口中使用setText()显示用户的名字。你可以用setFont()方法来设置QLabel部件的字体。请确保传递一个QFont对象并指定字体的类型和大小。然后用move()方法将user_label放在窗口的中心。其他的标签也是以类似的方式创建的。

完整程序展示如下

# user_profile.py
# Import necessary modules
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QLabel
from PyQt6.QtGui import QFont, QPixmap


class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.initializeUI()


    def createImageLabels(self):
        """Open image files and create image labels."""
        images = ["images/skyblue.png",
                  "images/profile_image.png"]
        
        for image in images:
            try:
                with open(image):
                    label = QLabel(self)
                    pixmap = QPixmap(image)
                    label.setPixmap(pixmap)
                    if image == "images/profile_image.png":
                        label.move(80, 20)
            except FileNotFoundError as error:
                print(f"Image not found.\nError: {error}")


    def setUpMainWindow(self):
        """Create the labels to be displayed in the windows."""
        self.createImageLabels()

        user_label = QLabel(self)
        user_label.setText("John Doe")
        user_label.setFont(QFont("Arial", 20))
        user_label.move(85, 140)

        bio_label = QLabel(self)
        bio_label.setText("Biography")
        bio_label.setFont(QFont("Arial", 17))
        bio_label.move(15, 170)

        about_label = QLabel(self)
        about_label.setText("I'm a Software Engineer with 10 years\
                            experience creating awsome code.")
        about_label.setWordWrap(True)
        about_label.move(15, 190)

        skills_label = QLabel(self)
        skills_label.setText("Skills")
        skills_label.setFont(QFont("Arial", 17))
        skills_label.move(15, 240)

        languages_label = QLabel(self)
        languages_label.setText("Python | PHP | SQL | JavaScript")
        languages_label.move(15, 260)

        experience_label = QLabel(self)
        experience_label.setText("Experience")
        experience_label.setFont(QFont("Arial", 17))
        experience_label.move(15, 290)

        developer_label = QLabel(self)
        developer_label.setText("Python Developer")
        developer_label.move(15, 310)

        dev_dates_label = QLabel(self)
        dev_dates_label.setText("May 2019 - Present")
        dev_dates_label.setFont(QFont("Arial", 10))
        dev_dates_label.move(15, 330)

        driver_label = QLabel(self)
        driver_label.setText("Pizza Delivery Driver")
        driver_label.move(15, 350)

        driver_dates_label = QLabel(self)
        driver_dates_label.setText("Aug 2015 - Dec 2018")
        driver_dates_label.setFont(QFont("Arial", 10))
        driver_dates_label.move(15, 370)
    
    def initializeUI(self):
        """Set up the application's GUI."""
        self.setGeometry(50, 50, 250, 400)
        self.setWindowTitle("User Profile GUI")
        self.setUpMainWindow()
        self.show()


# Run program
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec())

结果图展示如下:

Alt

总结

在本章中,我们发现了如何在GUI窗口中添加和安排部件。QLabel widget是一个基本类,它不仅可以显示文本,还可以和其他PyQt类一起使用,比如显示图片的QPixmap或改变标签文本样式或大小的QFont。每一个PyQt类都包括各种方法来扩展其功能和外观。

在下一章,我们将探讨一些不同的部件类,包括QPushButton和QLineEdit,它们将允许用户与你开发的应用程序进行交互。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值