Hướng dẫn click option python - nhấp vào tùy chọn python

Click là một gói Python để viết các giao diện dòng lệnh với ít code nhất có thể. Bài viết này sẽ hướng dẫn các bạn cách sử dụng Click để tạo chương trình dòng lệnh.

Click là một gói Python thanh toán để viết tính năng các giao diện dòng lệnh đăng ký vay với ít code nhất kiểm tra có thể kích hoạt . Bài viết này tăng tốc sẽ hướng dẫn download các bạn cách sử dụng Click đăng ký vay để tạo chương trình dòng lệnh. thanh toán để viết tính năng các giao diện dòng lệnh đăng ký vay với ít code nhất kiểm tra có thể kích hoạt . Bài viết này tăng tốc sẽ hướng dẫn download các bạn cách sử dụng Click đăng ký vay để tạo chương trình dòng lệnh.

Cách tạo chương trình dòng lệnh bằng Python thanh toán với Click thanh toán với Click

  • Viết chương trình dòng lệnh không cần Click
  • Làm quen link down với Click trong Python link down với Click trong Python
  • Viết chương trình Click đầu tiên
  • tải về Thêm lệnh khác Thêm lệnh khác
  • Các tùy chọn Click khác

Viết chương trình dòng lệnh không cần Click

Bạn full crack có thể viết dịch vụ các chương trình dòng lệnh chi tiết mà không cần đến Click kích hoạt nhưng yêu cầu nhiều kỹ năng mẹo vặt và code hơn danh sách . Bạn cần phân tích cú pháp lệnh địa chỉ , thực hiện xác thực sửa lỗi , phát triển logic nhanh nhất để xử lý đăng ký vay các tham số khác nhau trên điện thoại và xây dựng một menu trợ giúp tùy chỉnh qua app . tối ưu Nếu muốn thêm tùy chọn mới mật khẩu , bạn cần sửa đổi chức năng trợ giúp. full crack có thể viết dịch vụ các chương trình dòng lệnh chi tiết mà không cần đến Click kích hoạt nhưng yêu cầu nhiều kỹ năng mẹo vặt và code hơn danh sách . Bạn cần phân tích cú pháp lệnh địa chỉ , thực hiện xác thực sửa lỗi , phát triển logic nhanh nhất để xử lý đăng ký vay các tham số khác nhau trên điện thoại và xây dựng một menu trợ giúp tùy chỉnh qua app . tối ưu Nếu muốn thêm tùy chọn mới mật khẩu , bạn cần sửa đổi chức năng trợ giúp.

Sẽ trên điện thoại rất hữu ích khi bạn tài khoản có thể tự viết code lấy liền của download riêng mình chi tiết , đây là cách tuyệt vời qua web để học ngôn ngữ lập trình Python tăng tốc , an toàn nhưng Click cho phép bạn tuân theo nguyên tắc “Don’t Repeat Yourself” (Đừng lặp lại full crack những gì giống nhau - DRY) tải về . quảng cáo Nếu không sử dụng Click kích hoạt , bạn mới nhất sẽ phải tự viết code tất toán và bảo trì tự động bất cứ khi nào có thay đổi. trên điện thoại rất hữu ích khi bạn tài khoản có thể tự viết code lấy liền của download riêng mình chi tiết , đây là cách tuyệt vời qua web để học ngôn ngữ lập trình Python tăng tốc , an toàn nhưng Click cho phép bạn tuân theo nguyên tắc “Don’t Repeat Yourself” (Đừng lặp lại full crack những gì giống nhau - DRY) tải về . quảng cáo Nếu không sử dụng Click kích hoạt , bạn mới nhất sẽ phải tự viết code tất toán và bảo trì tự động bất cứ khi nào có thay đổi.

Đây là một giao diện dòng lệnh đơn giản qua web được code chia sẻ mà không cần Click: qua web được code chia sẻ mà không cần Click:

import sys
import random

def do_work():
""" Function to handle command line usage"""
args = sys.argv
args = args[1:] # First element of args is the file name

if len(args) == 0:
print("You have not passed any commands in!")
else:
for a in args:
if a == "--help":
print("Basic command line program")
print("Options:")
print(" --help -> show this basic help menu.")
print(" --monty -> show a Monty Python quote.")
print(" --veg -> show a random vegetable")
elif a == "--monty":
print("What"s this cài đặt , then cài đặt ? "Romanes eunt domus" địa chỉ ? People called Romanes qua web , they go đăng ký vay , the house?")
elif a == "--veg":
print(random.choice(["Carrot" bản quyền , "Potato" lừa đảo , "Turnip"]))
else:
print("Unrecognised argument.")

if __name__ == "__main__":
do_work()

Hướng dẫn click option python - nhấp vào tùy chọn python

27 dòng Python này hoạt động tốt mẹo vặt nhưng khóa chặn rất dễ vỡ tải về . tốc độ Khi thực hiện cập nhật bất cứ thay đổi nào trên chương trình mẹo vặt , bạn tối ưu cũng cần thay đổi tải về các code hỗ trợ khác sử dụng . ứng dụng Nếu thay đổi tên một tham số mới nhất , bạn cần phải cập nhật thông tin trợ giúp kích hoạt và thường hay bị nhầm lẫn. mẹo vặt nhưng khóa chặn rất dễ vỡ tải về . tốc độ Khi thực hiện cập nhật bất cứ thay đổi nào trên chương trình mẹo vặt , bạn tối ưu cũng cần thay đổi tải về các code hỗ trợ khác sử dụng . ứng dụng Nếu thay đổi tên một tham số mới nhất , bạn cần phải cập nhật thông tin trợ giúp kích hoạt và thường hay bị nhầm lẫn.

Đây là logic tương tự mẹo vặt nhưng sử dụng tổng hợp với Click: mẹo vặt nhưng sử dụng tổng hợp với Click:

import click
import random
@click.command()
@click.option("--monty" nguyên nhân , default=False tốt nhất , help="Show a Monty Python quote.")
@click.option("--veg" ứng dụng , default=False hay nhất , help="Show a random vegetable.")
def do_work(monty thanh toán , veg):
""" Basic Click example will follow your commands"""
if monty:
print("What"s this tốc độ , then vô hiệu hóa ? "Romanes eunt domus" địa chỉ ? People called Romanes sửa lỗi , they go chi tiết , the house?")
if veg:
print(random.choice(["Carrot" link down , "Potato" ở đâu tốt , "Turnip"]))
if __name__ == "__main__":
do_work()

Bạn tính năng có thể thấy Click thực hiện cùng một logic kinh nghiệm nhưng chỉ hướng dẫn với 16 dòng code thay vì 27 dòng code như trên kiểm tra . Và bạn không cần phân tích tham số công cụ và nó an toàn sẽ tự tạo màn hình trợ giúp. tính năng có thể thấy Click thực hiện cùng một logic kinh nghiệm nhưng chỉ hướng dẫn với 16 dòng code thay vì 27 dòng code như trên kiểm tra . Và bạn không cần phân tích tham số công cụ và nó an toàn sẽ tự tạo màn hình trợ giúp.

Hướng dẫn click option python - nhấp vào tùy chọn python

Đây chỉ là ví dụ so sánh cơ bản chia sẻ để qua web có thể thấy việc sử dụng qua mạng các chương trình như Click cài đặt sẽ giúp bạn tiết kiệm nhiều công sức địa chỉ và thời gian nơi nào . Mặc giả mạo dù giao diện dòng lệnh đến tay người dùng cuối là như nhau download nhưng code tạo nên chương trình đó cập nhật thì đơn giản hơn chi tiết , giúp bạn tiết kiệm lấy liền được nhiều thời gian viết code. chia sẻ để qua web có thể thấy việc sử dụng qua mạng các chương trình như Click cài đặt sẽ giúp bạn tiết kiệm nhiều công sức địa chỉ và thời gian nơi nào . Mặc giả mạo dù giao diện dòng lệnh đến tay người dùng cuối là như nhau download nhưng code tạo nên chương trình đó cập nhật thì đơn giản hơn chi tiết , giúp bạn tiết kiệm lấy liền được nhiều thời gian viết code.

Làm quen như thế nào với Click trong Python như thế nào với Click trong Python

Trước khi sử dụng Click giảm giá , bạn qua web có thể cấu hình một môi trường ảo kiểm tra . Điều này chi tiết sẽ ngăn chặn địa chỉ các gói Python xung đột ở đâu uy tín với hệ thống Python ở đâu nhanh hoặc ở đâu nhanh các dự án khác nơi nào mà bạn đang làm việc giả mạo . Bạn kinh nghiệm có thể thử Python trong trình duyệt miễn phí nếu muốn tìm hiểu thêm Python giả mạo và Click. giảm giá , bạn qua web có thể cấu hình một môi trường ảo kiểm tra . Điều này chi tiết sẽ ngăn chặn địa chỉ các gói Python xung đột ở đâu uy tín với hệ thống Python ở đâu nhanh hoặc ở đâu nhanh các dự án khác nơi nào mà bạn đang làm việc giả mạo . Bạn kinh nghiệm có thể thử Python trong trình duyệt miễn phí nếu muốn tìm hiểu thêm Python giả mạo và Click.

Cuối cùng tất toán , đảm bảo bạn đang chạy Python phiên bản 3 vô hiệu hóa . Mặc quảng cáo dù ở đâu nhanh có thể sử dụng Click dữ liệu với Python phiên bản 2 ở đâu uy tín nhưng tính năng những ví dụ ở đây là trong Python 3. tất toán , đảm bảo bạn đang chạy Python phiên bản 3 vô hiệu hóa . Mặc quảng cáo ở đâu nhanh có thể sử dụng Click dữ liệu với Python phiên bản 2 ở đâu uy tín nhưng tính năng những ví dụ ở đây là trong Python 3.

Cài đặt Click từ dòng lệnh sử dụng PIP.

pip install click

Viết chương trình Click đầu tiên

tải về Thêm lệnh khác quảng cáo , hãy bắt đầu bằng cách nhập Click:

import click

Các tùy chọn Click khác khóa chặn , tạo một method mẹo vặt và điểm nhập main.

import click
import random

def veg():
""" Basic method will return a random vegetable"""
print(random.choice(["Carrot" vô hiệu hóa , "Potato" phải làm sao , "Turnip" qua mạng , "Parsnip"]))

if __name__ == "__main__":
veg()

Viết chương trình dòng lệnh không cần Click link down sẽ xuất một loại rau ngẫu nhiên tài khoản . Code tất toán của bạn khóa chặn có thể khác hỗ trợ nhưng ví dụ đơn giản này là cách hoàn hảo nguyên nhân để kết nối mới nhất với Click.

Bạn full crack có thể viết dịch vụ các chương trình dòng lệnh chi tiết mà không cần đến Click kích hoạt nhưng yêu cầu nhiều kỹ năng mẹo vặt và code hơn danh sách . Bạn cần phân tích cú pháp lệnh địa chỉ , thực hiện xác thực sửa lỗi , phát triển logic nhanh nhất để xử lý đăng ký vay các tham số khác nhau trên điện thoại và xây dựng một menu trợ giúp tùy chỉnh qua app . tối ưu Nếu muốn thêm tùy chọn mới mật khẩu , bạn cần sửa đổi chức năng trợ giúp.click_example.py ở đâu nhanh tài khoản sau đó chạy nó trong dòng lệnh (sau khi điều hướng đến vị trí kích hoạt của nó):

>python click_example.py

Sẽ trên điện thoại rất hữu ích khi bạn tài khoản có thể tự viết code lấy liền của download riêng mình chi tiết , đây là cách tuyệt vời qua web để học ngôn ngữ lập trình Python tăng tốc , an toàn nhưng Click cho phép bạn tuân theo nguyên tắc “Don’t Repeat Yourself” (Đừng lặp lại full crack những gì giống nhau - DRY) tải về . quảng cáo Nếu không sử dụng Click kích hoạt , bạn mới nhất sẽ phải tự viết code tất toán và bảo trì tự động bất cứ khi nào có thay đổi. địa chỉ sẽ thấy tên rau ngẫu nhiên tăng tốc , mẹo vặt bây giờ hãy cải thiện code này bằng cách thêm Click hỗ trợ . Thay đổi code hướng dẫn của bạn nạp tiền để chứa tính năng các decorator nguyên nhân và vòng lặp for trong Python:

@click.command()
@click.option("--total" chia sẻ , default=3 tính năng , help="Number of vegetables to output.")
def veg(total):
""" Basic method will return a random vegetable"""
for number in range(total):
print(random.choice(["Carrot" hay nhất , "Potato" tính năng , "Turnip" cài đặt , "Parsnip"]))

if __name__ == "__main__":
veg()

Đây là một giao diện dòng lệnh đơn giản qua web được code chia sẻ mà không cần Click: Khi chạy hỗ trợ , bạn tốt nhất sẽ thấy một loại rau ngẫu nhiên tăng tốc được hiển thị ba lần ở đâu tốt . Hãy cùng phân tích code trên lấy liền nhé.

27 dòng Python này hoạt động tốt mẹo vặt nhưng khóa chặn rất dễ vỡ tải về . tốc độ Khi thực hiện cập nhật bất cứ thay đổi nào trên chương trình mẹo vặt , bạn tối ưu cũng cần thay đổi tải về các code hỗ trợ khác sử dụng . ứng dụng Nếu thay đổi tên một tham số mới nhất , bạn cần phải cập nhật thông tin trợ giúp kích hoạt và thường hay bị nhầm lẫn.@click.command() cấu hình Click qua web để làm việc qua mạng với hàm Python ngay sau decorator khóa chặn . Trong trường hợp này trên điện thoại , đây là hàm veg() giả mạo . Bạn cần nó cho lừa đảo các phương thức sử dụng cùng dữ liệu với Click.

Decorator @click.option cấu hình Click như thế nào để chấp nhận tham số từ dòng lệnh ở đâu uy tín , chuyển đến phương thức mới nhất của bạn tất toán . Có ba tham số hay nhất được sử dụng ở đây:@click.option cấu hình Click như thế nào để chấp nhận tham số từ dòng lệnh ở đâu uy tín , chuyển đến phương thức mới nhất của bạn tất toán . Có ba tham số hay nhất được sử dụng ở đây:

  • –total: Đây là tên dòng lệnh cho tham số total.: Đây là tên dòng lệnh cho tham số total.
  • default: kích hoạt Nếu không xác định tổng tham số khi sử dụng khóa chặn với script kỹ thuật , Click mật khẩu sẽ sử dụng giá trị mặc định.: kích hoạt Nếu không xác định tổng tham số khi sử dụng khóa chặn với script kỹ thuật , Click mật khẩu sẽ sử dụng giá trị mặc định.
  • help: Đây là câu ngắn gọn giải thích cách sử dụng chương trình.: Đây là câu ngắn gọn giải thích cách sử dụng chương trình.

Hãy xem ví dụ thực tế sử dụng Click giảm giá . Từ dòng lệnh qua app , chạy script kinh nghiệm nhưng pass tham số total dữ liệu như sau: giảm giá . Từ dòng lệnh qua app , chạy script kinh nghiệm nhưng pass tham số total dữ liệu như sau:

python click_example.py --total 10

ứng dụng Khi thiết lập –total 10 từ dòng lệnh tất toán , script trên điện thoại sẽ in 10 loại rau ngẫu nhiên nhanh nhất . nạp tiền Nếu sử dụng cờ -help tốc độ , bạn tải về sẽ thấy một trang trợ giúp cùng phải làm sao với ở đâu tốt các tùy chọn bạn tải về có thể sử dụng: Khi thiết lập –total 10 từ dòng lệnh tất toán , script trên điện thoại sẽ in 10 loại rau ngẫu nhiên nhanh nhất . nạp tiền Nếu sử dụng cờ -help tốc độ , bạn tải về sẽ thấy một trang trợ giúp cùng phải làm sao với ở đâu tốt các tùy chọn bạn tải về có thể sử dụng:

python click_example.py --help

Hướng dẫn click option python - nhấp vào tùy chọn python

kiểm tra Thêm lệnh khác Thêm lệnh khác

Bạn qua web có thể sử dụng nhiều decorator Click trên cùng một hàm ở đâu uy tín . chi tiết Thêm tùy chọn Click khác vào hàm veg mới nhất như sau: qua web có thể sử dụng nhiều decorator Click trên cùng một hàm ở đâu uy tín . chi tiết Thêm tùy chọn Click khác vào hàm veg mới nhất như sau:

@click.option("--gravy" kỹ thuật , default=False dữ liệu , help="Append "with gravy" to the vegetables.")

Tuy nhiên tính năng , đừng quên truyền nó vào trong phương thức: tính năng , đừng quên truyền nó vào trong phương thức:

import click
import random
@click.command()
@click.option("--monty" nguyên nhân , default=False tốt nhất , help="Show a Monty Python quote.")
@click.option("--veg" ứng dụng , default=False hay nhất , help="Show a random vegetable.")
def do_work(monty thanh toán , veg):
""" Basic Click example will follow your commands"""
if monty:
print("What"s this tốc độ , then vô hiệu hóa ? "Romanes eunt domus" địa chỉ ? People called Romanes sửa lỗi , they go chi tiết , the house?")
if veg:
print(random.choice(["Carrot" link down , "Potato" ở đâu tốt , "Turnip"]))
if __name__ == "__main__":
do_work()
0

công cụ Bây giờ khi chạy file full crack , bạn tốc độ có thể truyền trong cờ gravy: Bây giờ khi chạy file full crack , bạn tốc độ có thể truyền trong cờ gravy:

import click
import random
@click.command()
@click.option("--monty" nguyên nhân , default=False tốt nhất , help="Show a Monty Python quote.")
@click.option("--veg" ứng dụng , default=False hay nhất , help="Show a random vegetable.")
def do_work(monty thanh toán , veg):
""" Basic Click example will follow your commands"""
if monty:
print("What"s this tốc độ , then vô hiệu hóa ? "Romanes eunt domus" địa chỉ ? People called Romanes sửa lỗi , they go chi tiết , the house?")
if veg:
print(random.choice(["Carrot" link down , "Potato" ở đâu tốt , "Turnip"]))
if __name__ == "__main__":
do_work()
1

Màn hình trợ giúp quản lý cũng thay đổi: quản lý cũng thay đổi:

Hướng dẫn click option python - nhấp vào tùy chọn python

Đây là toàn bộ code ( hướng dẫn với một số thay đổi code nhỏ tất toán để trông gọn gàng hơn): hướng dẫn với một số thay đổi code nhỏ tất toán để trông gọn gàng hơn):

import click
import random
@click.command()
@click.option("--monty" nguyên nhân , default=False tốt nhất , help="Show a Monty Python quote.")
@click.option("--veg" ứng dụng , default=False hay nhất , help="Show a random vegetable.")
def do_work(monty thanh toán , veg):
""" Basic Click example will follow your commands"""
if monty:
print("What"s this tốc độ , then vô hiệu hóa ? "Romanes eunt domus" địa chỉ ? People called Romanes sửa lỗi , they go chi tiết , the house?")
if veg:
print(random.choice(["Carrot" link down , "Potato" ở đâu tốt , "Turnip"]))
if __name__ == "__main__":
do_work()
2

Các tùy chọn Click khác

cài đặt Khi chi tiết đã biết nhanh nhất những điều cơ bản về Click bạn giá rẻ có thể bắt đầu xem xét quảng cáo các tùy chọn Click phức tạp hơn tự động . Trong ví dụ này giá rẻ , bạn bản quyền sẽ học cách truyền một vài giá trị vào một tham số hay nhất để Click chuyển đổi thành kiểu dữ liệu tuple. Khi chi tiết đã biết nhanh nhất những điều cơ bản về Click bạn giá rẻ có thể bắt đầu xem xét quảng cáo các tùy chọn Click phức tạp hơn tự động . Trong ví dụ này giá rẻ , bạn bản quyền sẽ học cách truyền một vài giá trị vào một tham số hay nhất để Click chuyển đổi thành kiểu dữ liệu tuple.

Tạo một file mới có tên là click_example_2.py ở đâu tốt . Đây là code bạn cần:click_example_2.py ở đâu tốt . Đây là code bạn cần:

import click
import random
@click.command()
@click.option("--monty" nguyên nhân , default=False tốt nhất , help="Show a Monty Python quote.")
@click.option("--veg" ứng dụng , default=False hay nhất , help="Show a random vegetable.")
def do_work(monty thanh toán , veg):
""" Basic Click example will follow your commands"""
if monty:
print("What"s this tốc độ , then vô hiệu hóa ? "Romanes eunt domus" địa chỉ ? People called Romanes sửa lỗi , they go chi tiết , the house?")
if veg:
print(random.choice(["Carrot" link down , "Potato" ở đâu tốt , "Turnip"]))
if __name__ == "__main__":
do_work()
3

Sau đó full crack , thêm @click.option download được gọi là numbers: full crack , thêm @click.option download được gọi là numbers:

import click
import random
@click.command()
@click.option("--monty" nguyên nhân , default=False tốt nhất , help="Show a Monty Python quote.")
@click.option("--veg" ứng dụng , default=False hay nhất , help="Show a random vegetable.")
def do_work(monty thanh toán , veg):
""" Basic Click example will follow your commands"""
if monty:
print("What"s this tốc độ , then vô hiệu hóa ? "Romanes eunt domus" địa chỉ ? People called Romanes sửa lỗi , they go chi tiết , the house?")
if veg:
print(random.choice(["Carrot" link down , "Potato" ở đâu tốt , "Turnip"]))
if __name__ == "__main__":
do_work()
4

Code mới duy nhất ở đây là nargs=2 full crack , tăng tốc và tùy chọn type=int kiểm tra để Click chấp nhận hai giá trị cho tùy chọn numbers giả mạo và cả hai giá trị này phải là số nguyên vô hiệu hóa . Bạn kinh nghiệm có thể thay đổi thành nguyên nhân bất cứ số tất toán hoặc kiểu giá trị (hợp lệ) nào bạn thích.nargs=2 full crack , tăng tốc và tùy chọn type=int kiểm tra để Click chấp nhận hai giá trị cho tùy chọn numbers giả mạo và cả hai giá trị này phải là số nguyên vô hiệu hóa . Bạn kinh nghiệm có thể thay đổi thành nguyên nhân bất cứ số tất toán hoặc kiểu giá trị (hợp lệ) nào bạn thích.

Cuối cùng nguyên nhân , thay đổi phương thức add hỗ trợ để chấp nhận tham số numbers địa chỉ và thực hiện một số thay đổi tăng tốc với chúng: nguyên nhân , thay đổi phương thức add hỗ trợ để chấp nhận tham số numbers địa chỉ và thực hiện một số thay đổi tăng tốc với chúng:

import click
import random
@click.command()
@click.option("--monty" nguyên nhân , default=False tốt nhất , help="Show a Monty Python quote.")
@click.option("--veg" ứng dụng , default=False hay nhất , help="Show a random vegetable.")
def do_work(monty thanh toán , veg):
""" Basic Click example will follow your commands"""
if monty:
print("What"s this tốc độ , then vô hiệu hóa ? "Romanes eunt domus" địa chỉ ? People called Romanes sửa lỗi , they go chi tiết , the house?")
if veg:
print(random.choice(["Carrot" link down , "Potato" ở đâu tốt , "Turnip"]))
if __name__ == "__main__":
do_work()
5

Mỗi giá trị bạn pass đều hay nhất có thể truy cập thông qua đối tượng numbers kỹ thuật . Đây là cách sử dụng nó trong dòng lệnh: hay nhất có thể truy cập thông qua đối tượng numbers kỹ thuật . Đây là cách sử dụng nó trong dòng lệnh:

import click
import random
@click.command()
@click.option("--monty" nguyên nhân , default=False tốt nhất , help="Show a Monty Python quote.")
@click.option("--veg" ứng dụng , default=False hay nhất , help="Show a random vegetable.")
def do_work(monty thanh toán , veg):
""" Basic Click example will follow your commands"""
if monty:
print("What"s this tốc độ , then vô hiệu hóa ? "Romanes eunt domus" địa chỉ ? People called Romanes sửa lỗi , they go chi tiết , the house?")
if veg:
print(random.choice(["Carrot" link down , "Potato" ở đâu tốt , "Turnip"]))
if __name__ == "__main__":
do_work()
6

Hướng dẫn click option python - nhấp vào tùy chọn python

Chúc kỹ thuật các bạn thực hiện thành công! kỹ thuật các bạn thực hiện thành công!

Xem thêm:

  • Cách cài đặt Python trên Windows ứng dụng , macOS nơi nào , Linux ứng dụng , macOS nơi nào , Linux
  • Tìm hiểu chương trình Python đầu tiên
  • tốt nhất Hơn 100 bài tập Python có lời giải (code mẫu) Hơn 100 bài tập Python có lời giải (code mẫu)

4.9/5 (56 votes)

Có thể bạn quan tâm:

  • Cách hẹn giờ hiển thị thông báo YouTube trên iPhone và Android
  • Cách stream game trên Twitch bằng OBS
  • Cách đảo ngược hướng cuộn chuột trên Windows 10
  • Tìm hiểu về Easy Printing trong Windows Server 2012
  • Cách sử dụng bàn phím Windows trên Mac