Chuyển Dữ Liệu Giữa 2 Cửa Sổ Trong QT Designer Python
Có thể bạn quan tâm
Một số bạn chưa biết cách chuyển dữ liệu qua lại giữa 2 cửa sổ trong QT Designer Python, nên Tui có viết bài blog này để các bạn tham khảo. Kịch bản như sau:
Ta có 1 giao diện chính:

Màn hình chính gồm 1 QTableWidget có 2 cột: mã sản phẩm, tên sản phẩm
và một nút “Mở form nhập liệu”. Form nhập liệu có giao diện như sau:

Màn hình chi tiết nhập liệu gồm có 2 ô nhập liệu là QLineEdit và 1 Button lưu
Khi nhấn Lưu thì chuyển đối tượng(dữ liệu) Sản phẩm từ màn hình chi tiết quay trở lại màn hình chính để cập nhật dữ liệu.

Ta tiến hành làm theo các bước sau.
Tạo 1 Project tên gì cũng được, ví dụ Tui đặt là “CallBackData”. Sau đó tạo các lớp, các giao diện có cấu trúc như sau(Tui sẽ hướng dẫn chi tiết từng thành phần):

Giao diện frmMain.ui: lưu vào project trên

Đặt tên control như giao diện trên.
Tiếp theo thiết kế giao diện frmNhapLieu.ui. lưu vào project trên.

Tiếp theo coding cho lớp SanPham:
class SanPham: def __init__(self, ma, ten): self.ma = ma self.ten =tenTiếp theo coding cho màn hình chính đó là lớp Main.py.
import sys from PyQt5 import QtCore, QtGui, QtWidgets, uic from PyQt5.QtWidgets import QDialog, QTableWidgetItem, QApplication, QMainWindow, QTableWidget from PyQt5 import QtWidgets, QtCore, QtGui import NhapLieu #nạp giao diện Ui_MainWindow, QtBaseClass = uic.loadUiType('frmMain.ui') class frmMain(QtWidgets.QMainWindow, Ui_MainWindow): def __init__(self): QtWidgets.QMainWindow.__init__(self) Ui_MainWindow.__init__(self) self.setupUi(self) self.btnMoFormNhapLieu.clicked.connect(self.moFormNhapLieu) def moFormNhapLieu(self): fNhapLieu.setModal(True) fNhapLieu.show() #đây là hàm call back của main, từ màn hình chi tiết khi bấm lưu sẽ gọi hàm này #thông qua alias ref #truyền đối tượng sản phẩm từ chi tiết qua đây để xử lý def luuDuLieu(self,sp): #thêm 1 dòng mới cho QTableWidgetItem: self.tblSanPham.insertRow(self.tblSanPham.rowCount()) row=self.tblSanPham.rowCount()-1 self.tblSanPham.setItem(row, 0, QTableWidgetItem(sp.ma)) self.tblSanPham.setItem(row, 1, QTableWidgetItem(sp.ten)) if __name__ == "__main__": #tạo các đối tượng cho màn hình chính app = QtWidgets.QApplication(sys.argv) fMain = frmMain() fMain.show() #màn hình chi tiết fNhapLieu = NhapLieu.frmNhapLieu() #truyền tham chiếu màn hình chính qua màn hình chi tiết #alias lưu tham chiếu này đặt tên là ref (bạn đặt tên gì tùy) fNhapLieu.ref=fMain sys.exit(app.exec_())Code Main.py sẽ hiển thị màn hình chính “frmMain.ui” Cũng như xử lý sự kiện và lắng nghe callback trả đối tượng về từ màn hình chi tiết.
Dưới đây là coding cho màn hình chi tiết NhapLieu.py:
import sys from PyQt5.uic import loadUi from PyQt5.QtWidgets import QDialog from PyQt5 import QtWidgets from SanPham import SanPham class frmNhapLieu(QDialog): def __init__(self): super(frmNhapLieu, self).__init__() loadUi('frmNhapLieu.ui',self) self.btnLuu.clicked.connect(self.xuLyLuu) self.ref=None def xuLyLuu(self): #lấy dữ liệu trên giao diện ma= self.txtMa.text() ten=self.txtTen.text() #khởi tạo thành đối tượng sản phẩm sp=SanPham(ma,ten) #gửi đối tượng ngược lại cho màn hình chính (gọi là callBack) self.ref.luuDuLieu(sp)Như vậy ta đã xử lý xong phần giao diện cũng như cách thức truyền dữ liệu qua lại giữa 2 cửa sổ (callback)
coding có thể tải ở đây:
https://github.com/thanhtd32/qtdesigner/tree/main/CallBackData
hoặc ở đây:
https://www.mediafire.com/file/5l498quoqzygi9f/CallBackData.rar/file
Chia sẻ lên:
- Tweet
Related
Từ khóa » Chuyển Ui Sang Py
-
Thiết Kế Giao Diện UI Python Với PyQT5
-
How To Convert A .ui File To .py File - Stack Overflow
-
Bài 2: Cài Qt Designer Và Chuyển đổi File .ui Sang .py (bycharm) 2021 ...
-
Convert Ui To Py Code Example - Code Grepper
-
Python — Cách Chuyển đổi Tệp .ui Thành Tệp .py
-
Chuyển đổi Giao Diện Người Dùng PyQt Sang Python
-
Convert .ui File .py - Python Forum
-
UI Using PyQt5 - GitHub
-
Liên Kết Một Tập Tin QtDesigner .ui Với Python / Pyqt? - HelpEx
-
Tạo Ứng Dụng Desktop Đơn Giản Với Python - CodeLearn
-
Xây Dựng Công Cụ Tự động Cắt ảnh Chỉ Chứa Khuôn Mặt Sử Dụng ...
-
Lập Trình Giao Diện Python Với PyQt5 Và Qt Designer - Giáo Viên 4.0
-
Using .ui Files From Designer Or QtCreator With QUiLoader And ...
-
Python: Python Và PyQt: Xây Dựng Máy Tính Bỏ Túi (Calculator)