
Hộp thoại thông báo NXMessageBox và đọc lựa chọn Yes/No của người dùng
#Python#Giao diện1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Với script chạy tay, hộp thoại xác nhận giúp tránh thao tác nhầm. NXMessageBox có sẵn trong NX, không cần thư viện giao diện ngoài.
Hộp thoại thông báo NXMessageBox và đọc…Các bước thực hiện
- Lấy UI. NXOpen.UI.GetUI() trả về đối tượng giao diện.
- Chọn loại hộp. DialogType.Information, Warning, Error hoặc Question.
- Hiển thị. ui.NXMessageBox.Show(tiêu đề, loại, nội dung) trả về số nguyên của nút bấm.
- Xử lý kết quả. Câu hỏi có hai nút thường trả 1 hoặc 2.
- Bỏ qua khi chạy nền. Kiểm tra session.IsBatch để không chờ người.
Code tham khảo (Python)
import NXOpen def hoi_xac_nhan(tieu_de, noi_dung): session = NXOpen.Session.GetSession() if session.IsBatch: return True # chạy nền: mặc định đồng ý ui = NXOpen.UI.GetUI() kq = ui.NXMessageBox.Show( tieu_de, NXOpen.NXMessageBox.DialogType.Question, noi_dung) return kq == 1 # 1 = nút đầu tiên (Yes/OK) def thong_bao(tieu_de, noi_dung, loai=NXOpen.NXMessageBox.DialogType.Information): if NXOpen.Session.GetSession().IsBatch: return NXOpen.UI.GetUI().NXMessageBox.Show(tieu_de, loai, noi_dung) def main(): part = NXOpen.Session.GetSession().Parts.Work ten = part.Leaf if part else "(chưa có part)" if hoi_xac_nhan("Xác nhận", "Chạy script trên " + ten + "?"): thong_bao("Xong", "Đã xử lý " + ten) else: thong_bao("Hủy", "Người dùng đã hủy", NXOpen.NXMessageBox.DialogType.Warning) if __name__ == "__main__": main()Giải thích code
NXOpen.UI.GetUI().NXMessageBox.Show(...)khác vớiNXOpen.NXMessageBox(đó là kiểu chứa enumDialogType).- Giá trị trả về là mã nút được bấm; luôn thử một lần để biết quy ước trong phiên bản của bạn.
- Kiểm tra
IsBatchđể script chạy nền không bị treo chờ bấm nút.
Lỗi thường gặp
- Gọi
NXOpen.UI.GetUI()trong môi trường chạy nền hoàn toàn không giao diện có thể lỗi; bọc trong try. - Nội dung quá dài sẽ bị cắt; chuyển sang Listing Window cho kết quả lớn.
Code mang tính tham khảo, viết cho NX 12 trở lên (Python journal). Tên menu và một số lớp có thể khác theo phiên bản NX; hãy chạy thử trên bản sao của chi tiết trước khi dùng cho dữ liệu thật.
Điểm: 0
Trả lời
Đăng nhập để tham gia thảo luận.