Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengaturcaraan pelayan Python: membangunkan program GUI menggunakan PySide2

Pengaturcaraan pelayan Python: membangunkan program GUI menggunakan PySide2

王林
王林asal
2023-06-18 09:04:142424semak imbas

Python telah menjadi bahasa pengaturcaraan yang sangat popular, dengan ramai pembangun memanfaatkan kesederhanaan dan fleksibiliti Python untuk mencipta pelbagai aplikasi. Antaranya, Python juga digunakan untuk membangunkan aplikasi sisi pelayan, dan PySide2 ialah salah satu alat yang paling penting dalam proses ini.

PySide2 ialah pengikatan untuk bahasa pengaturcaraan Python untuk rangka kerja Qt. Alat ini membolehkan pengaturcara Python menulis program yang menggunakan struktur GUI. Oleh kerana PySide2 ialah alat merentas platform yang berjalan pada semua sistem pengendalian utama, ia amat sesuai untuk membangunkan program sebelah pelayan.

Dalam artikel ini, kita akan membincangkan cara membangunkan atur cara GUI menggunakan pengaturcaraan pelayan PySide2 dan Python. Kami akan bermula dengan aplikasi PySide2 yang mudah, menunjukkan cara menambahkan fungsi dan pengendali acara kepada mereka, dan membincangkan cara mencipta program GUI dengan ciri kompleks seperti kawalan UI dan animasi.

1. Pasang PySide2

Mula-mula, kita perlu memasang PySide2. PySide2 berjalan pada sistem pengendalian yang berbeza, jadi pasang dengan sewajarnya bergantung pada sistem pengendalian anda.

Di Linux, kami boleh memasang PySide2 melalui pip menggunakan arahan berikut:

pip install PySide2

Pada sistem Windows, kami boleh menggunakan arahan yang sama dalam command prompt untuk memasang PySide2.

Selepas pemasangan selesai, kami boleh mula menulis aplikasi PySide2 kami yang pertama.

2. Bangunkan aplikasi PySide2 yang ringkas

Kami akan bermula dengan aplikasi PySide2 yang sangat mudah yang hanya mencipta tetingkap dan tab. Untuk mencipta aplikasi ini, kita perlu mengimport modul PySide2.QtWidget dan sys:

import sys
from PySide2.QtWidgets import QApplication, QLabel, QWidget

Seterusnya, kita perlu mencipta objek QApplication dan QWidget. Kami akan menggunakan objek QWidget untuk mencipta GUI kami:

app = QApplication(sys.argv)

widget = QWidget()
widget.setWindowTitle('My First PySide2 Application')
widget.setGeometry(300, 300, 250, 150)

label = QLabel('Hello World', widget)
label.move(100, 50)

widget.show()

sys.exit(app.exec_())

Coretan kod ini akan mencipta objek QWidget dan menetapkan kedudukan serta saiznya. Ia juga akan mencipta label dan menambahkannya pada objek QWidget. Label dicipta menggunakan kelas QLabel. Akhir sekali, kami menggunakan kaedah persembahan untuk memaparkan GUI dan keluar dari aplikasi.

3. Tambahkan pengendali acara pada aplikasi

Sekarang, kami telah mencipta aplikasi PySide2 yang mudah, tetapi ia tidak boleh berbuat apa-apa lagi. Untuk membuat aplikasi kami bertindak balas terhadap acara, kami perlu menambah pengendali acara.

Dalam PySide2, kami boleh menggunakan slot untuk menentukan pengendali acara. Slot ialah kaedah untuk menerima acara GUI dan mengendalikannya. Dalam contoh ini, kami akan mencipta kelas baharu yang akan mewarisi QWidget dan mentakrifkan kaedah slot.

Coretan kod di bawah akan membuat butang dan menambahkannya pada objek QWidget. Butang ini akan mencetuskan acara PushButtonClicked. Acara ini akan dicetuskan apabila butang diklik. Kami akan mentakrifkan kaedah slot dalam aplikasi kami yang akan mengendalikan acara PushButtonClicked dan memaparkan mesej pada konsol:

import sys
from PySide2.QtCore import Slot
from PySide2.QtWidgets import QApplication, QPushButton, QWidget

class MyWidget(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        button = QPushButton('Click me', self)
        button.setToolTip('Click this button')
        button.move(100, 70)

        button.clicked.connect(self.on_pushButton_clicked)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('My Second PySide2 Application')
        self.show()

    @Slot()
    def on_pushButton_clicked(self):
        print('Button clicked.')

Sekarang apabila kami mengklik butang, program akan memaparkannya pada konsol "Button clicked" mesej . Ambil perhatian bahawa penghias @Slot() digunakan di hadapan kaedah Ini memberitahu program bahawa kaedah ini ialah slot PySide2 untuk dipanggil.

4. Cipta program GUI dengan kawalan UI dan animasi

Kini kita boleh mencipta aplikasi PySide2 yang ringkas dengan butang dan pengendali acara. Seterusnya, mari tambahkan lebih banyak kawalan dan animasi pada program ini.

Dalam contoh ini, kami akan mencipta kelas baharu yang akan mewarisi kelas QDialog. QDialog ialah kelas dalam PySide2 yang digunakan untuk memaparkan kotak dialog. Dalam kelas ini, kami akan mencipta teg baharu untuk bunga matahari untuk menjejaki sumber cahaya dan menggunakan rangka kerja animasi PySide2 untuk mencipta matahari kecil. Kami juga akan menambah butang untuk mengawal pergerakan matahari.

import sys
from PySide2.QtCore import QPropertyAnimation, QRect
from PySide2.QtGui import QPainter, QColor
from PySide2.QtWidgets import QApplication, QDialog, QLabel, QPushButton
from PySide2 import QtGui

class Sun(QWidget):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        self.setFixedSize(100, 100)
        self.color = QColor(255, 255, 0)

    def paintEvent(self, event):
        painter = QPainter(self)
        painter.setBrush(QtGui.QBrush(self.color))
        painter.drawEllipse(0, 0, self.width(), self.height())

class FollowSunDialog(QDialog):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        self.setWindowTitle('Follow the Sun')
        self.setGeometry(100, 100, 400, 400)

        sun_label = QLabel(self)
        sun_label.setFixedSize(50, 50)
        pixmap = QtGui.QPixmap('sun.png')
        sun_label.setPixmap(pixmap)

        self.sun = Sun()
        self.sun.move(50, 150)

        self.button = QPushButton('Start', self)
        self.button.move(50, 300)
        self.button.clicked.connect(self.onClick)

    def onClick(self):
        animator = QPropertyAnimation(self.sun, b'geometry')
        animator.setDuration(3000)
        animator.setStartValue(QRect(50, 150, 100, 100))
        animator.setEndValue(QRect(200, 50, 50, 50))

        animator.start()

if __name__ == '__main__':
    app = QApplication(sys.argv)

    dialog = FollowSunDialog()
    dialog.show()

    sys.exit(app.exec_())

Dalam coretan kod ini, kami mentakrifkan dua kelas, kelas Sun dan kelas FollowSunDialog. Kelas Matahari ialah subkelas QWidget dan digunakan untuk melukis imej matahari. Kelas FollowSunDialog ialah subkelas QDialog dan digunakan untuk memaparkan kotak dialog dan mengawal pergerakan matahari.

Kami juga menambah imej matahari untuk melukis matahari kecil, iaitu fail sun.png yang disimpan dalam direktori yang sama dengan fail program. Kami mencipta QPushButton yang apabila ditekan akan memulakan animasi widget matahari bergerak ke arah sudut kanan atas.

Animasi dicipta menggunakan rangka kerja animasi PySide2. Apabila butang ditekan, kami mentakrifkan objek QPropertyAnimation yang menggunakan sifat startValue dan endValue untuk menentukan kedudukan permulaan dan penamat widget matahari. Ia juga mentakrifkan masa animasi.

Kesimpulan:

Artikel ini memperkenalkan gabungan pengaturcaraan pelayan PySide2 dan Python Kami mencipta aplikasi PySide2 yang mudah, menambah pengendali acara pada aplikasi dan mencipta program UI GUI untuk kawalan dan animasi. . PySide2 ialah alat yang sangat berkuasa untuk mencipta aplikasi Python dengan struktur GUI. Untuk pembangun bahagian pelayan, PySide2 boleh mengurangkan masa pembangunan dan meningkatkan interaktiviti aplikasi dan kemudahan penggunaan.

Atas ialah kandungan terperinci Pengaturcaraan pelayan Python: membangunkan program GUI menggunakan PySide2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn