Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh Git chấp nhận cả tên thẻ và tên nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi không mong muốn. Bạn có chắc chắn muốn tạo nhánh này không?
PySimpleGUI là GUI Python bao bọc các bộ công cụ GUI Python khác [Tkinter, PySide, wxPython]. Bằng cách trừu tượng hóa sự phức tạp của các GUI khác thành một API chung, bạn có thể nhanh chóng viết mã có thể được hiển thị bằng bất kỳ bộ công cụ nào khác chỉ bằng cách thay đổi phần nhập ở đầu chương trình của bạn
Nếu bạn sử dụng wxPython và bạn muốn bố trí các widget của mình, bạn sẽ sử dụng wx. máy đo kích thước. Trong PySide hoặc PyQt, bạn sẽ sử dụng đối tượng Bố cục. Tkinter sử dụng trình quản lý hình học. Khái niệm chung là giống nhau. Khi bạn sử dụng các công cụ này, bộ công cụ GUI sẽ sử dụng vị trí tương đối của các tiện ích để sắp xếp chúng trên màn hình
Trong PySimpleGUI, điều tương tự cũng được thực hiện bằng cách sử dụng danh sách lồng nhau. Bạn sẽ xem xét một vài ví dụ khác nhau trong hướng dẫn này sẽ cung cấp cho bạn ý tưởng chung về cách thức hoạt động của tất cả những điều này
Tạo bố cục ngang
Tạo một loạt các Phần tử được định hướng theo chiều ngang [từ trái sang phải] được thực hiện với một danh sách nhỏ các danh sách trong PySimpleGUI
Mở trình soạn thảo Python và thêm đoạn mã sau
import PySimpleGUI as sg # Horizontal layout layout = [[sg.Button[f"OK {num}"] for num in range[1, 6]]] # Create the window window = sg.Window["Demo", layout] # Create an event loop while True: event, values = window.read[] # End program if user closes window or # presses the OK button if event == "OK" or event == sg.WIN_CLOSED: break window.close[]
Ở đây bạn sử dụng cách hiểu danh sách Python để tạo danh sách lồng nhau chứa năm đối tượng Nút trong đó. Khi bạn chạy mã này, bạn sẽ thấy các nút được căn chỉnh theo chiều ngang, với nút này cạnh nút kia đi từ trái sang phải
Bây giờ bạn đã sẵn sàng để xem cách bạn có thể viết lại mã để tạo bố cục dọc
Tạo bố cục dọc
Để tạo bố cục theo chiều dọc với PySimpleGUI, bạn cần tạo bố cục chứa một loạt danh sách lồng nhau, mỗi danh sách chứa một hoặc nhiều Phần tử trong đó
Tạo một tệp Python mới và thêm mã này vào nó
import PySimpleGUI as sg layout = [[sg.Button["OK"]], [sg.Button["OK 2"]], [sg.Button["OK 3"]], [sg.Button["OK 4"]], [sg.Button["OK 5"]]] # Create the window window = sg.Window["Demo", layout] # Create an event loop while True: event, values = window.read[] # End program if user closes window or # presses the OK button if event == "OK" or event == sg.WIN_CLOSED: break window.close[]
Khi bạn chạy mã này, các Thành phần nút sẽ được xếp chồng lên nhau từ trên xuống dưới theo chiều dọc, thay vì theo chiều ngang
Sử dụng Cột cho Bố cục Phức tạp
Nếu bạn cần thêm hai hoặc nhiều cột Phần tử cạnh nhau trong PySimpleGUI, bạn có thể sử dụng sg. Phần tử cột. Nó là một loại Phần tử chứa được tạo riêng để tạo các bộ Phần tử xếp chồng lên nhau
Tạo một tệp Python khác và thêm đoạn mã sau
import PySimpleGUI as sg import os.path # First the window layout in 2 columns file_list_column = [ [sg.Text["Image Folder"], sg.In[size=[25, 1], enable_events=True, key="-FOLDER-"], sg.FolderBrowse[],], [sg.Listbox[values=[], enable_events=True, size=[40, 20], key="-FILE LIST-"]], ] # For now will only show the name of the file that was chosen image_viewer_column = [ [sg.Text["Choose an image from list on left:"]], [sg.Text[size=[40, 1], key="-TEXT-"]], [sg.Image[key="-IMAGE-"]], ] # ----- Full layout ----- layout = [ [sg.Column[file_list_column], sg.VSeperator[], sg.Column[image_viewer_column],] ] window = sg.Window["Column Demo", layout] # Run the Event Loop while True: event, values = window.read[] if event == "Exit" or event == sg.WIN_CLOSED: break # Folder name was filled in, make a list of files in the folder if event == "-FOLDER-": folder = values["-FOLDER-"] try: # Get list of files in folder file_list = os.listdir[folder] except: file_list = [] fnames = [ f for f in file_list if os.path.isfile[os.path.join[folder, f]] and f.lower[].endswith[[".png", ".gif"]] ] window["-FILE LIST-"].update[fnames] elif event == "-FILE LIST-": # A file was chosen from the listbox try: filename = os.path.join[values["-FOLDER-"], values["-FILE LIST-"][0]] window["-TEXT-"].update[filename] window["-IMAGE-"].update[filename=filename] except: pass window.close[]
Trong ví dụ này, bạn tạo hai bố cục. Bố cục đầu tiên được gọi là file_list_column và chứa bốn Phần tử trong đó. Bố cục thứ hai được gọi là image_viewer_column và chứa ba Phần tử. Sau đó, bạn đặt các bố cục này bên trong các Cột nằm trong một bố cục. Như bạn có thể thấy, bố cục PySimpleGUI là các danh sách bên trong danh sách từ đầu đến cuối
kết thúc
PySimpleGUI loại bỏ một số sự phức tạp của việc tạo bố cục bằng cách sử dụng danh sách Python. Bộ công cụ GUI PyQt / PySide và wxPython sử dụng cách tiếp cận hướng đối tượng bao gồm một số lượng đáng kể bản mẫu và cờ để thực hiện nhiều việc tương tự. Mỗi người đều có sự đánh đổi của mình, nhưng đường cong học tập của PySimpleGUI phẳng hơn nhiều vì sự lựa chọn thiết kế của họ