Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Cách tạo một widget nhập giờ sử dụng lớp PyQt QTimeEdit
Trong bài viết này, bạn sẽ tìm hiểu cách tạo một widget nhập giờ bằng cách sử dụng lớp PyQt QTimeEdit
. Widget QTimeEdit
cho phép người dùng dễ dàng chỉnh sửa giờ bằng cách sử dụng các nút điều chỉnh hoặc bàn phím, đồng thời cung cấp giao diện người dùng trực quan để thao tác với các giá trị thời gian. Mình sẽ xem xét các thuộc tính chính của lớp QTimeEdit
, cách lấy giá trị thời gian hiện tại, và cách kết nối các tín hiệu để xử lý các sự kiện khi người dùng hoàn tất việc chỉnh sửa.
Giới thiệu về widget PyQt QTimeEdit
Lớp QTimeEdit
cho phép bạn tạo một widget để chỉnh sửa giờ:
Widget QTimeEdit
cho phép bạn chỉnh sửa giờ bằng cách sử dụng bàn phím hoặc các phím mũi tên lên/xuống để tăng/giảm giá trị thời gian. Ngoài ra, bạn cũng có thể sử dụng phím mũi tên trái/phải để di chuyển giữa các phần giờ, phút, và giây trong mục nhập.
QTimeEdit
có các thuộc tính hữu ích sau:
Bài viết này được đăng tại [free tuts .net]
Thuộc tính | Mô tả |
---|---|
time() |
Trả về giờ được hiển thị bởi widget. Giá trị trả về có kiểu QTime. Để chuyển đổi sang kiểu datetime.time trong Python, bạn có thể sử dụng phương thức toPyTime() của lớp QTime . |
minimumTime |
Xác định thời gian sớm nhất mà người dùng có thể đặt. |
maximumTime |
Xác định thời gian muộn nhất mà người dùng có thể đặt. |
displayFormat |
Là một chuỗi định dạng giờ hiển thị trong widget. |
QTimeEdit
phát ra tín hiệu editingFinished
khi việc chỉnh sửa hoàn tất.
Ví dụ về widget PyQt QTimeEdit
Chương trình sau sử dụng lớp QTimeEdit
để tạo một widget chỉnh sửa giờ:
import sys from PyQt6.QtWidgets import QApplication, QWidget, QTimeEdit, QLabel, QFormLayout class MainWindow(QWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setWindowTitle('PyQt QTimeEdit') self.setMinimumWidth(200) # Tạo một bố cục lưới layout = QFormLayout() self.setLayout(layout) self.time_edit = QTimeEdit(self) self.time_edit.editingFinished.connect(self.update) self.result_label = QLabel('', self) layout.addRow('Time:', self.time_edit) layout.addRow(self.result_label) # Hiển thị cửa sổ self.show() def update(self): value = self.time_edit.time() self.result_label.setText(str(value.toPyTime())) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() sys.exit(app.exec())
Cách hoạt động
Đầu tiên, tạo widget QTimeEdit
:
self.time_edit = QTimeEdit(self)
Thứ hai, kết nối tín hiệu editingFinished()
với phương thức update()
:
self.time_edit.editingFinished.connect(self.update)
Thứ ba, tạo một widget QLabel
để hiển thị giá trị của widget time_edit
sau khi hoàn tất chỉnh sửa:
self.result_label = QLabel('', self)
Cuối cùng, định nghĩa phương thức update()
để cập nhật nhãn với giá trị hiện tại của mục nhập giờ:
def update(self): value = self.time_edit.time() self.result_label.setText(str(value.toPyTime()))
Kết quả:
Kết bài
Sử dụng lớp QTimeEdit
để tạo một widget nhập giờ là cách hiệu quả để cung cấp cho người dùng khả năng chỉnh sửa thời gian trong ứng dụng PyQt của bạn. Bằng cách sử dụng phương thức time()
của lớp QTimeEdit
, bạn có thể dễ dàng lấy giá trị thời gian hiện tại và xử lý nó theo nhu cầu của ứng dụng. Kết nối với tín hiệu editingFinished
giúp bạn thực hiện các hành động ngay khi người dùng hoàn tất việc chỉnh sửa thời gian, tạo ra một trải nghiệm người dùng mượt mà và thân thiện. Với những kiến thức này, bạn có thể tích hợp widget nhập giờ vào các giao diện người dùng của mình một cách hiệu quả.