【100天精通python】Day35:一文掌握GUI界面編程基本操作

目錄

?專欄導讀?

? 1 GUI 編程概述

1.1 為什么需要GUI?

1.2 常見的GUI編程工具和庫

1.3 GUI應用程序的組成和架構

2 使用Tkinter 庫 進行GUI編程?

2.1 使用Tkinter庫進行GUI編程的基本流程

2.2??使用Tkinter庫進行GUI編程

2.2.1 導入Tkinter庫

2.2.2 添加標簽和按鈕

2.2.3 添加文本框

2.2.4 布局管理

2.2.5 事件處理

2.2.6 啟動主循環

3 Tkinter 組件使用詳解

3.1 布局管理

3.1.1 絕對布局 vs. 自動布局

3.1.2 使用Grid布局和Pack布局

3.1.3 使用Frame和LabelFrame進行組件的分組

3.2 事件處理

3.2.1 綁定事件和回調函數

3.2.2 常見事件

3.2.3 事件對象

3.3?用戶輸入和輸出

3.3.1 獲取和設置文本框的內容

3.3.2 處理按鈕點擊事件

3.3.3 創建彈出對話框和消息框

3.4 窗口和界面設計

3.4.1 創建多個窗口

3.4.2 添加菜單欄和工具欄

3.4.3?制作可滾動界面

3.5 圖形和圖像

3.5.1 在GUI中繪制基本圖形

3.5.2 顯示圖像文件

?3.5.3? 圖表和繪圖工具

3.6 交互式元素

3.6.1 制作表格和列表

3.6.2 使用滾動條和滑塊

?3.6.3 創建復選框、單選按鈕等

?4 實戰: 創建一個簡單的計算器GUI應用程序?


?專欄導讀?

專欄訂閱地址:https://blog.csdn.net/qq_35831906/category_12375510.html


? 1 GUI 編程概述

???GUI(圖形用戶界面)編程是一種用于創建圖形化用戶界面的技術,使用戶可以通過圖形元素(如窗口、按鈕、文本框等)與程序進行交互。

?????????GUI(圖形用戶界面) 是一種通過圖形元素(如窗口、按鈕、文本框、圖像等)來與計算機程序進行交互的方式。GUI使用戶能夠以可視化的方式與應用程序進行溝通,而不需要記住復雜的命令或語法。GUI可以大大提升用戶體驗,使用戶能夠更直觀、方便地操作應用程序。

1.1 為什么需要GUI?

  1. 用戶友好性:GUI使應用程序更易于使用,無需記住命令行參數或代碼。用戶可以通過圖形界面直觀地執行操作。

  2. 可視化:通過圖形元素,用戶可以在界面上直接看到信息、數據和操作結果,從而更容易理解應用程序的功能。

  3. 交互性:GUI允許用戶通過鼠標、鍵盤和觸摸等方式與應用程序進行交互,從而實現更多種類的操作。

  4. 提高效率:GUI工具提供了復雜任務的簡化界面,使用戶能夠更快速地執行任務,從而提高工作效率。

  5. 跨平臺:許多GUI庫和工具支持多個操作系統,允許開發人員在不同平臺上創建相似的用戶體驗。

1.2 常見的GUI編程工具和庫

  1. Tkinter:Python的標準GUI庫,適合簡單的GUI應用,易于學習和使用。

  2. Qt:一個跨平臺的GUI庫,具有豐富的功能和專業外觀,支持多種編程語言,如C++和Python。

  3. wxWidgets:另一個跨平臺GUI庫,提供原生外觀,適用于多種編程語言。

  4. GTK:一個開源的GUI工具包,用于創建Linux和UNIX系統下的應用程序。

  5. PyQt:Python的Qt綁定,將Qt功能帶入Python世界,提供高級功能和定制選項。

  6. Kivy:用于開發移動應用和其他多點觸摸界面的Python庫,支持多種平臺。

1.3 GUI應用程序的組成和架構

  1. 窗口管理器:負責管理和顯示應用程序的窗口,包括窗口的大小、位置和外觀等。

  2. 用戶界面元素:包括按鈕、文本框、標簽、菜單、工具欄等,用于用戶與程序的交互。

  3. 事件處理:響應用戶操作(如點擊按鈕、輸入文本等)并執行相應的操作,以實現用戶和應用程序之間的交互。

  4. 布局管理:安排和組織界面元素的位置和大小,以便在不同屏幕尺寸和分辨率上呈現一致的界面。

  5. 圖形繪制和顯示:顯示圖像、圖表和繪圖,用于展示數據和圖形。

  6. 數據交互:與后端邏輯進行通信,獲取、處理和展示數據。

  7. 事件循環:GUI應用程序通常是事件驅動的,它會持續監聽用戶的操作和系統事件,然后執行相應的操作。

  8. 主循環:負責監聽和分發事件,管理窗口的顯示和更新。

  9. 用戶體驗:提供良好的用戶體驗,包括用戶友好的界面、反饋和錯誤處理。

????????綜上所述,GUI是一個用于創建圖形化用戶界面的技術,可以顯著提升用戶與應用程序之間的互動和可用性。不同的GUI庫和工具提供了不同級別的功能和靈活性,可以根據項目需求選擇合適的GUI開發方案。

2 使用Tkinter 庫 進行GUI編程?

????????Tkinter是Python的標準GUI庫,可以用來創建窗口和各種GUI組件,如標簽、按鈕、文本框等。它是一個輕量級且易于上手的工具,適合用于創建中小型的桌面應用程序。

2.1 使用Tkinter庫進行GUI編程的基本流程

  1. 導入Tkinter庫:首先,需要導入Tkinter庫。一般使用import tkinter as tk來簡化調用。

  2. 創建主窗口:使用Tk()函數創建一個主窗口對象,這是應用程序的主界面。

  3. 添加GUI組件:通過Tkinter的各種類來添加不同的GUI組件,如Label、Button、Entry等。使用.pack()、.grid()等方法布局組件。

  4. 定義事件處理函數:如果需要對組件的事件做出響應,例如按鈕點擊事件,需要定義相應的事件處理函數。

  5. 布局管理:使用布局管理器(如.pack()、.grid()、.place())來排列和放置組件,以確保界面整齊布局。

  6. 啟動主循環:使用.mainloop()方法啟動GUI應用的主循環,使應用保持運行狀態,等待用戶操作。

2.2??使用Tkinter庫進行GUI編程

2.2.1 導入Tkinter庫

首先,導入Tkinter庫并創建主窗口對象。

import tkinter as tk# 創建主窗口
root = tk.Tk()
root.title("GUI Application")root.mainloop()  #啟動主循環

2.2.2 添加標簽和按鈕

使用Label和Button類來添加標簽和按鈕組件。

# 添加標簽
label = tk.Label(root, text="Welcome to GUI Programming!")
label.pack()# 添加按鈕
def button_clicked():label.config(text="Button Clicked!")button = tk.Button(root, text="Click Me", command=button_clicked)
button.pack()

2.2.3 添加文本框

使用Entry類添加文本框。

# 添加文本框
entry = tk.Entry(root)
entry.pack()

2.2.4 布局管理

使用pack()方法來布置組件。

label.pack()
button.pack()
entry.pack()

2.2.5 事件處理

定義按鈕點擊事件的回調函數。

def button_clicked():label.config(text="Hello, " + entry.get())button = tk.Button(root, text="Submit", command=button_clicked)
button.pack()

2.2.6 啟動主循環

通過mainloop()方法啟動GUI的主循環。

root.mainloop()

3 Tkinter 組件使用詳解

3.1 布局管理

3.1.1 絕對布局 vs. 自動布局

????????絕對布局是指通過像素坐標來精確定位每個組件的位置。然而,隨著窗口大小的變化,絕對布局可能導致界面的不穩定和錯位,因此在大多數情況下不建議使用。自動布局則是使用布局管理器來自動調整和排列組件,適應窗口大小的變化,使界面更具響應性和適應性。

3.1.2 使用Grid布局和Pack布局

????????Tkinter提供了兩種常見的布局管理器:.grid().pack().grid()使用行和列來布局組件,.pack()按照添加的順序自動排列組件。

import tkinter as tkroot = tk.Tk()
root.title("Layout Example")# 使用Grid布局
label1 = tk.Label(root, text="Label 1")
label2 = tk.Label(root, text="Label 2")
label1.grid(row=0, column=0)
label2.grid(row=1, column=1)# 使用Pack布局
button1 = tk.Button(root, text="Button 1")
button2 = tk.Button(root, text="Button 2")
button1.pack()
button2.pack()root.mainloop()

3.1.3 使用Frame和LabelFrame進行組件的分組

Frame和LabelFrame是Tkinter中的容器組件,可以用于將其他組件分組和組織。

frame = tk.Frame(root)
frame.pack()label_frame = tk.LabelFrame(root, text="Group")
label_frame.pack()

3.2 事件處理

????????事件處理是GUI編程中的重要概念,它涉及到用戶與界面的交互,如鼠標點擊、按鈕點擊、鍵盤輸入等。以下是事件處理的詳解和示例,幫助你理解如何在Tkinter中處理不同類型的事件。

????????在GUI編程中,用戶的操作和動作會觸發不同的事件,程序會通過事件處理函數來響應這些事件。事件可以是鼠標點擊、按鍵輸入、窗口關閉等。

3.2.1 綁定事件和回調函數

????????在Tkinter中,可以使用.bind()方法將事件和相應的回調函數綁定在一起。當事件發生時,與之綁定的函數會被調用。

import tkinter as tkdef button_clicked(event):label.config(text="Button Clicked!")root = tk.Tk()
root.title("Event Handling Example")label = tk.Label(root, text="Click the Button")
label.pack()button = tk.Button(root, text="Click Me")
button.bind("<Button-1>", button_clicked)  # 綁定鼠標左鍵點擊事件
button.pack()root.mainloop()

在這個示例中,當按鈕被鼠標左鍵點擊時,button_clicked()函數會被調用,更新標簽的內容。

3.2.2 常見事件

????????除了按鈕點擊事件,還有許多其他常見的事件,如鼠標事件和鍵盤事件。你可以使用不同的事件描述符來綁定這些事件。

def mouse_enter(event):label.config(text="Mouse Entered!")def key_pressed(event):label.config(text="Key Pressed: " + event.char)label.bind("<Enter>", mouse_enter)  # 鼠標進入事件
label.bind("<KeyPress>", key_pressed)  # 鍵盤按鍵事件

????????在這個示例中,當鼠標進入標簽區域時,mouse_enter()函數會被調用;當鍵盤按鍵時,key_pressed()函數會被調用,并顯示按下的鍵。

3.2.3 事件對象

????????當事件發生時,會自動創建一個事件對象,可以在事件處理函數中使用這個對象來獲取有關事件的信息。

def mouse_clicked(event):x = event.x  # 獲取鼠標點擊位置的x坐標y = event.y  # 獲取鼠標點擊位置的y坐標label.config(text=f"Mouse Clicked at ({x}, {y})")label.bind("<Button-1>", mouse_clicked)  # 鼠標左鍵點擊事件

在這個示例中,當鼠標左鍵點擊時,mouse_clicked()函數會被調用,并顯示鼠標點擊的坐標。

通過了解事件處理的基本概念,綁定不同的事件以及使用事件對象,你可以為GUI應用程序添加更多的交互性和響應性,使用戶與界面之間的交互更加豐富和實時。

3.3?用戶輸入和輸出

3.3.1 獲取和設置文本框的內容

可以使用.get().insert()方法來獲取和設置文本框的內容。

entry = tk.Entry(root)
entry.pack()
text = entry.get()  # 獲取文本框內容
entry.insert(0, "Hello")  # 在光標處插入文本

3.3.2 處理按鈕點擊事件

按鈕點擊事件的處理可以通過綁定回調函數來實現。

import tkinter as tkdef button_clicked():label.config(text="Button Clicked!")root = tk.Tk()
root.title("Button Click Event Example")label = tk.Label(root, text="Click the Button")
label.pack()button = tk.Button(root, text="Click Me", command=button_clicked)  # 綁定回調函數
button.pack()root.mainloop()

在這個示例中,我們創建了一個按鈕(button),并通過command參數將button_clicked函數綁定為按鈕的回調函數。當按鈕被點擊時,button_clicked函數會被自動調用,更新標簽的內容。

這種方式使按鈕的操作和功能與回調函數解耦,使代碼更加模塊化和清晰。可以在回調函數中執行各種操作,如更新界面、執行計算、顯示信息等。

3.3.3 創建彈出對話框和消息框

Tkinter提供了tkinter.messagebox模塊,用于創建各種對話框和消息框。

import tkinter.messagebox as messageboxdef show_alert():messagebox.showinfo("Alert", "This is an alert message!")button = tk.Button(root, text="Show Alert", command=show_alert)
button.pack()

3.4 窗口和界面設計

3.4.1 創建多個窗口

在Tkinter中,你可以通過創建新的Tk對象來創建多個窗口。每個Tk對象都代表一個應用程序窗口。以下是一個示例,演示如何創建多個窗口:

import tkinter as tk# 創建第一個窗口
root1 = tk.Tk()
root1.title("Window 1")
label1 = tk.Label(root1, text="Window 1")
label1.pack()# 創建第二個窗口
root2 = tk.Tk()
root2.title("Window 2")
label2 = tk.Label(root2, text="Window 2")
label2.pack()root1.mainloop()
root2.mainloop()

在這個示例中,我們創建了兩個不同的Tk對象(root1root2),每個對象代表一個窗口。通過調用各自的mainloop()方法,使兩個窗口能夠獨立運行。

3.4.2 添加菜單欄和工具欄

Tkinter支持創建菜單欄和工具欄,以增強GUI應用程序的功能。下面是一個示例,演示如何創建一個簡單的菜單欄:

import tkinter as tk
from tkinter import Menudef do_something():label.config(text="Menu Item Clicked")root = tk.Tk()
root.title("Menu Example")# 創建菜單欄
menu_bar = Menu(root)
root.config(menu=menu_bar)# 創建菜單
file_menu = Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label="File", menu=file_menu)
file_menu.add_command(label="New", command=do_something)
file_menu.add_command(label="Open", command=do_something)
file_menu.add_separator()
file_menu.add_command(label="Exit", command=root.quit)# 添加標簽
label = tk.Label(root, text="Menu Example")
label.pack()root.mainloop()

在這個示例中,我們創建了一個菜單欄(menu_bar),并在菜單欄中添加了一個名為"File"的菜單(file_menu)。菜單中包含了一些菜單項,每個菜單項都有相應的命令(command),當菜單項被點擊時會觸發相應的函數。

通過創建多個窗口和添加菜單欄,你可以實現更復雜和功能豐富的GUI應用程序,使用戶能夠方便地進行操作和交互。

3.4.3?制作可滾動界面

在Tkinter中,你可以通過使用滾動條(Scrollbar)來實現可滾動的界面,特別是在內容超出可視區域時。以下是一個示例,演示如何在Tkinter應用程序中創建一個可滾動的界面:

import tkinter as tk
from tkinter import ttkroot = tk.Tk()
root.title("Scrollable Interface Example")# 創建滾動條
scrollbar = tk.Scrollbar(root)
scrollbar.pack(side="right", fill="y")# 創建文本框并綁定滾動條
text = tk.Text(root, yscrollcommand=scrollbar.set)
text.pack(side="left", fill="both", expand=True)# 將滾動條與文本框關聯
scrollbar.config(command=text.yview)# 添加大量文本
for i in range(100):text.insert("end", f"Line {i}\n")root.mainloop()

在這個示例中,我們創建了一個文本框(text)并與一個垂直滾動條(scrollbar)關聯,以便在文本內容超出文本框可視區域時進行滾動。通過將滾動條的command參數設置為text.yview,實現滾動條和文本框的聯動。

你可以根據需要在可滾動的界面中添加不同類型的組件,使用戶能夠瀏覽和查看大量內容,而不會占用過多的界面空間。

3.5 圖形和圖像

3.5.1 在GUI中繪制基本圖形

可以使用Canvas組件來在GUI中繪制圖形。

canvas = tk.Canvas(root, width=200, height=200)
canvas.pack()
canvas.create_rectangle(50, 50, 150, 150, fill="blue")

3.5.2 顯示圖像文件

可以使用PIL庫來在Tkinter中顯示圖像文件。

from PIL import Image, ImageTkimage = Image.open("image.png")
photo = ImageTk.PhotoImage(image)
label = tk.Label(root, image=photo)
label.pack()

?3.5.3? 圖表和繪圖工具

??????在GUI應用程序中,通過使用繪圖工具可以創建圖表、繪制圖形和展示數據可視化。Tkinter本身并沒有內置強大的繪圖工具,但你可以結合其他庫來實現繪圖和圖表功能。下面介紹一些常用的繪圖庫和示例。

  • Matplotlib:是一個廣泛使用的繪圖庫,用于在Python中創建各種類型的圖表和圖形。它提供了豐富的繪圖功能,包括線圖、散點圖、柱狀圖、餅圖等。你可以使用Matplotlib在Tkinter應用程序中嵌入繪圖區域,從而在GUI界面中展示圖表。
  • Plotly: 用于創建交互式的圖表和可視化。
  • Seaborn: 基于Matplotlib,用于創建統計圖表和數據可視化。
  • Pillow: 用于圖像處理和繪圖。

????????你可以根據項目需求選擇適合的繪圖工具,將圖表和可視化內容嵌入到Tkinter應用程序中,從而實現數據展示和交互式數據分析。

3.6 交互式元素

3.6.1 制作表格和列表

可以使用Treeview組件來制作表格和列表。

tree = ttk.Treeview(root, columns=("Name", "Age"))
tree.heading("#1", text="Name")
tree.heading("#2", text="Age")
tree.insert("", "end", values=("Alice", 25))
tree.pack()

3.6.2 使用滾動條和滑塊

滾動條和滑塊可以通過Scrollbar組件來添加。

scrollbar = tk.Scrollbar(root)
scrollbar.pack(side="right", fill="y")listbox = tk.Listbox(root, yscrollcommand=scrollbar.set)
for i in range(50):listbox.insert("end", "Item " + str(i))
listbox.pack(side="left", fill="both")scrollbar.config(command=listbox.yview)

?3.6.3 創建復選框、單選按鈕等

復選框和單選按鈕可以使用CheckbuttonRadiobutton來創建。

check_var = tk.IntVar()
checkbox = tk.Checkbutton(root, text="Check me", variable=check_var)
checkbox.pack()radio_var = tk.StringVar()
radio_button1 = tk.Radiobutton(root, text="Option 1", variable=radio_var, value="option1")
radio_button2 = tk.Radiobutton(root, text="Option 2", variable=radio_var, value="option2")
radio_button1.pack()
radio_button2.pack()

在Tkinter中,你可以通過復選框(Checkbutton)和單選按鈕(Radiobutton)等組件來實現選項的選擇。以下是示例代碼,演示如何創建復選框和單選按鈕:

? ?創建復選框示例:

import tkinter as tk
from tkinter import ttkdef show_selection():selected_items = []for var, text in zip(check_vars, check_texts):if var.get():selected_items.append(text)selection_label.config(text="Selected Items: " + ", ".join(selected_items))root = tk.Tk()
root.title("Checkboxes Example")check_texts = ["Option 1", "Option 2", "Option 3"]
check_vars = [tk.IntVar() for _ in check_texts]for i, text in enumerate(check_texts):check = ttk.Checkbutton(root, text=text, variable=check_vars[i])check.pack()selection_button = ttk.Button(root, text="Show Selection", command=show_selection)
selection_button.pack()selection_label = tk.Label(root, text="")
selection_label.pack()root.mainloop()

?

?在這個示例中,我們創建了三個復選框(check),并使用IntVar來綁定復選框的狀態。當用戶勾選或取消勾選復選框時,對應的IntVar的值會發生變化。通過遍歷所有IntVar,我們可以獲取用戶選擇的選項。

?創建單選按鈕示例:

import tkinter as tk
from tkinter import ttkdef show_selection():selected_item = radio_var.get()selection_label.config(text="Selected Item: " + selected_item)root = tk.Tk()
root.title("Radiobuttons Example")radio_texts = ["Option 1", "Option 2", "Option 3"]
radio_var = tk.StringVar()for text in radio_texts:radio = ttk.Radiobutton(root, text=text, variable=radio_var, value=text)radio.pack()selection_button = ttk.Button(root, text="Show Selection", command=show_selection)
selection_button.pack()selection_label = tk.Label(root, text="")
selection_label.pack()root.mainloop()

?

?4 實戰: 創建一個簡單的計算器GUI應用程序?

以下是一個使用Tkinter創建一個簡單的計算器GUI應用程序的示例代碼:

import tkinter as tk# 定義按鈕點擊事件
def button_click(number):current = entry.get()entry.delete(0, tk.END)entry.insert(0, current + str(number))def clear():entry.delete(0, tk.END)def calculate():try:result = eval(entry.get())entry.delete(0, tk.END)entry.insert(0, str(result))except:entry.delete(0, tk.END)entry.insert(0, "Error")# 創建主窗口
root = tk.Tk()
root.title("Simple Calculator")# 創建文本框
entry = tk.Entry(root, font=("Helvetica", 16))
entry.grid(row=0, column=0, columnspan=4)# 創建按鈕
buttons = [("7", 1, 0), ("8", 1, 1), ("9", 1, 2), ("/", 1, 3),("4", 2, 0), ("5", 2, 1), ("6", 2, 2), ("*", 2, 3),("1", 3, 0), ("2", 3, 1), ("3", 3, 2), ("-", 3, 3),("0", 4, 0), (".", 4, 1), ("=", 4, 2), ("+", 4, 3),
]for (text, row, col) in buttons:button = tk.Button(root, text=text, font=("Helvetica", 16), command=lambda t=text: button_click(t))button.grid(row=row, column=col, sticky="nsew")# 清除按鈕和等號按鈕單獨處理
clear_button = tk.Button(root, text="C", font=("Helvetica", 16), command=clear)
clear_button.grid(row=5, column=0, columnspan=2, sticky="nsew")equal_button = tk.Button(root, text="=", font=("Helvetica", 16), command=calculate)
equal_button.grid(row=5, column=2, columnspan=2, sticky="nsew")# 設置網格布局權重
for row in range(5):root.grid_rowconfigure(row, weight=1)
for col in range(4):root.grid_columnconfigure(col, weight=1)# 啟動主循環
root.mainloop()

輸出如下:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38668.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38668.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38668.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

繪制世界地圖or中國地圖

寫在前面 在8月初,自己需要使用中國地圖的圖形,自己就此也查詢相關的教程,自己也做一下小小總結,希望對自己和同學們有所幫助。 最終圖形 這個系列從2022年開始,一直更新使用R語言分析數據及繪制精美圖形。小杜的生信筆記主要分享小杜學習日常!如果,你對此感興趣可以加…

Flutter Engine編譯環境安裝

前言 根據設置引擎開發環境的描述&#xff0c;確保有以下可用依賴項&#xff1a; Linux、macOS 或 Windows。 Linux 支持 Android 和 Fuchsia 的交叉編譯工件&#xff0c;但不支持 iOS。macOS 支持 Android 和 iOS 的交叉編譯工件。Windows 不支持任何 Android、Fuchsia 或 i…

MySQL存儲結構及索引

文章目錄 MySQL結構1.2存儲引擎介紹1.3存儲引擎特點InnoDB邏輯存儲結構 MyISAMMemory區別及特點存儲引擎選擇 索引索引概述索引結構BTreeHash索引分類聚集索引&二級索引索引語法SQL性能分析索引優化最左前綴法則范圍查詢字符串不加引號模糊查詢or連接條件數據分布影響覆蓋索…

達夢數據庫dbms_stats包的操作實踐記錄

索引的統計信息收集 GATHER_INDEX_STATSindex_stats_show 根據模式名&#xff0c;索引名獲得該索引的統計信息。用于經過 GATHER_TABLE_STATS、GATHER_INDEX_STATS 或 GATHER_SCHEMA_STATS 收集之后展示。返回兩個結果集&#xff1a;一個是索引的統計信息&#xff1b;另一個是…

Kotlin優點及為什么使用Kotlin

文章目錄 一 Hello Kotlin二 Kotlin優點三 團隊為什么采用 Kotlin 一 Hello Kotlin Kotlin和Andriod 二 Kotlin優點 三 團隊為什么采用 Kotlin

如何從PHP 獲取絕對路徑、文檔根目錄、基本 URL

根據您的服務器配置,獲取正確的路徑信息可能具有挑戰性。例如,PHP 并沒有直接提供一個變量來返回站點基本 URL。以下是一些代碼片段,可以幫助您獲取絕對路徑、文檔根目錄和基本 URL。 獲取絕對路徑 如果您的腳本位于 /path/directory/ 目錄中,您可以使用以下代碼片段來獲…

Mendix 基礎審計模塊介紹

一、前言 作為售前顧問&#xff0c;幫助客戶選型低代碼產品是日常工作。考察一家低代碼產品的好壞&#xff0c;其中一個維度就是產品的成熟度。產品成熟度直接影響產品在使用中的穩定性和用戶體驗&#xff0c;對于新工具導入和可持續運用至關重要。 那怎么考察一個產品是否成…

【校招VIP】java語言考點之ConcurrentHashMap1.7和1.8

考點介紹&#xff1a; ConcurrentHashMap是JAVA校招面試的熱門考點&#xff0c;主要集中在1.7和1.8的底層結構和相關的性能提高。 理解這個考點要從map本身的并發問題出發&#xff0c;再到hashTable的低性能并發安全&#xff0c;引申到ConcurrentHashMap的分塊處理。同時要理解…

JAVA工具類Collections

// 【Collections】:集合的工具類 對集合進行排序 主要針對類類型 // 使用sort方法 // 1. 在需要排序的實體類中實現 Comparable接口 重寫compareTo方法 // 1.動態綁定 向下轉型 // 2.基本數據類型 this.id-s1.id 升序 // 3.類類型 this.n…

【C++】做一個飛機空戰小游戲(八)——生成敵方炮彈(rand()和srand()函數應用)

[導讀]本系列博文內容鏈接如下&#xff1a; 【C】做一個飛機空戰小游戲(一)——使用getch()函數獲得鍵盤碼值 【C】做一個飛機空戰小游戲(二)——利用getch()函數實現鍵盤控制單個字符移動【C】做一個飛機空戰小游戲(三)——getch()函數控制任意造型飛機圖標移動 【C】做一個飛…

SpringBoot中的可擴展接口

目錄 # 背景 # 可擴展的接口啟動調用順序圖 # ApplicationContextInitializer # BeanDefinitionRegistryPostProcessor # BeanFactoryPostProcessor # InstantiationAwareBeanPostProcessor # SmartInstantiationAwareBeanPostProcessor # BeanFactoryAware # Applicati…

炬芯科技發布全新第二代智能手表芯片,引領腕上新趨勢!

2023年7月&#xff0c;炬芯科技宣布全新第二代智能手表芯片正式發布。自2021年底炬芯科技推出第一代的智能手表芯片開始便快速獲得了市場廣泛認可和品牌客戶的普遍好評。隨著技術的不斷創新和突破&#xff0c;為了更加精準地滿足市場多元化的變幻和用戶日益增長的體驗需求&…

Jmeter-壓力測試工具

文章目錄 Jmeter快速入門1.1.下載1.2.解壓1.3.運行 2.快速入門2.1.設置中文語言2.2.基本用法 Jmeter快速入門 1s內發送大量請求&#xff0c;模擬高QPS&#xff0c;用以測試網站能承受的壓力有多大 Jmeter依賴于JDK&#xff0c;所以必須確保當前計算機上已經安裝了JDK&#xff0…

Android Shape 的使用

目錄 什么是Shape? shape屬性 子標簽屬性 corners &#xff08;圓角&#xff09; solid &#xff08;填充色&#xff09; gradient &#xff08;漸變&#xff09; stroke &#xff08;描邊&#xff09; padding &#xff08;內邊距&#xff09; size &#xff08;大小…

CentOS系統環境搭建(三)——Centos7安裝DockerDocker Compose

centos系統環境搭建專欄&#x1f517;點擊跳轉 Centos7安裝Docker&Docker Compose 使用 yum 安裝Docker 內核 [rootVM-4-17-centos ~]# uname -r 3.10.0-1160.88.1.el7.x86_64Docker 要求 CentOS 系統的內核版本高于 3.10 更新 yum yum update安裝需要的軟件包&#x…

在Windows Server 2008上啟用自動文件夾備份

要在Windows Server 2008上啟用自動文件夾備份&#xff0c;您可以使用內置的Windows備份功能。下面是如何設置它的方法&#xff1a; 1. 點擊“開始”按鈕并選擇“服務器管理器”&#xff0c;打開“服務器管理器”。 2. 在“服務器管理器”窗口中&#xff0c;單擊左側窗格中的“…

Python學習筆記_基礎篇(六)_Set集合,函數,深入拷貝,淺入拷貝,文件處理

1、Set基本數據類型 a、set集合&#xff0c;是一個無序且不重復的元素集合 class set(object):"""set() -> new empty set objectset(iterable) -> new set objectBuild an unordered collection of unique elements."""def add(self, *a…

redis-數據類型及樣例

一.string 類型數據的基本操作 1.添加/修改數據 set key value2.獲取數據 get key3.刪除數據 del key4.添加/修改多個數據 mset key1 value1 key2 value25.獲取多個數據 mget key1 key2二.list類型的基本操作 數據存儲需求&#xff1a;存儲多個數據&#xff0c;并對數據…

day 0815

計算文件有多少行&#xff1f; 2.文件的拷貝

SpringBoot引入外部jar打包失敗解決,SpringBoot手動引入jar打包war后報錯問題

前言 使用外部手動添加的jar到項目&#xff0c;打包時出現jar找不到問題解決 處理 例如項目結構如下 引入方式換成這種 <!-- 除了一下這兩種引入外部jar&#xff0c;還是可以將外部jar包添加到maven中&#xff08;百度查&#xff09;--><!-- pdf轉word --><…