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 đổi Qt
-
Để Có Câu Trả Lời Chính Xác Hơn Xin Vui Lòng Chọn 'số Thập Phân' Từ Các Tùy Chọn Bên Trên Kết Quả. Lưu ý: Để Có Kết Quả Số Thập Phân đơn Thuần Vui Lòng Chọn 'số Thập Phân' Từ Tùy Chọn Bên Trên Kết Quả. ... Bảng Quart Mỹ (chất Lỏng) Sang Lít.
-
Chuyển đổi Quart Sang Lít - Metric Conversion
-
Quart (Lít Anh Bằng 1, 14 Lít) (qt)
-
Quy đổi Từ Quart Liquid (Anh) Sang Ounce Chất Lỏng (Hoa Kỳ) (qt ...
-
Quy đổi Từ Qt Sang Pt (Quart Liquid (Anh) Sang Pint Liquid (Anh))
-
QT Sang MP4 - Chuyển đổi Tệp Trực Tuyến Miễn Phí
-
Chuyển đổi Quarts (UK) để Lít (qt → L ) - Unit Converter
-
Tải Phần Mềm Chuyển đổi QT, Huong Dan Chuyen Doi Qt Full
-
Qt Là Gì Mà Sao Muốn Đọc Qt, Chuyển Đổi Quart Mỹ (Chất Lỏng ...
-
QT-02/GD&Đ Chuyển đổi Cơ Sở Giáo Dục Mầm Non Bán Công Sang ...
-
Chuyển đổi Từ 250 QT Tới USD (QT Tới US Dollar)
-
4 Quý Hoa Kỳ Sang Lít - US Quart (us Qt) - Citizen Maths
-
Qt Là Gì - Chuyển Đổi Quart Mỹ (Chất Lỏng) Sang Lít
-
Qt Là Gì