使用Python Tkinter創建GUI應用程序

????????大家好,當我們談及使用Python Tkinter創建GUI應用程序時,我們涉及的不僅是技術和代碼,更是關于創造力和用戶體驗的故事。Tkinter作為Python標準庫中最常用的GUI工具包,提供了豐富的功能和靈活的接口,讓開發者能夠輕松地構建出各種各樣的圖形用戶界面。Tkinter不僅易于學習和上手,而且具有強大的功能,足以滿足各種應用場景的需求。從簡單的計算器到復雜的數據可視化工具,Tkinter都能勝任。

一、Tkinter簡介

????????Tkinter是Python標準庫中用于創建圖形用戶界面(GUI)的工具包。它基于Tk GUI工具包,Tkinter提供了訪問Tk GUI工具包的Python接口,使得開發GUI應用程序變得相對簡單。下面是關于Tkinter的一些詳細介紹:

Tkinter的特點:

  1. 跨平臺性:Tkinter是Python標準庫的一部分,因此可以在幾乎所有支持Python的操作系統上運行,包括Windows、Linux和macOS。
  2. 易學易用:Tkinter提供了相對簡單的API,對于初學者來說很容易上手,同時也能夠滿足大多數簡單到中等復雜度的GUI應用程序的需求。
  3. 集成度高:由于是Python標準庫的一部分,因此不需要額外安裝其他軟件包或庫,可以直接在Python環境中使用。
  4. 可擴展性:Tkinter提供了許多內置的小部件(widgets),如按鈕、標簽、文本框等,同時也支持自定義小部件和布局管理器。

Tkinter中的一些重要概念:

  1. 窗口(Window):所有Tkinter應用程序的基礎是窗口,可以是主窗口或者其他類型的彈出窗口。
  2. 小部件(Widgets):Tkinter提供了各種小部件,如按鈕、標簽、文本框、列表框等,用于構建GUI界面。
  3. 布局管理器(Layout Managers):Tkinter提供了幾種布局管理器來幫助開發者將小部件布置在窗口中的合適位置,常用的有Pack、Grid和Place。
  4. 事件驅動(Event-Driven):Tkinter使用事件驅動的編程模型,通過綁定事件處理函數來響應用戶操作,如點擊按鈕或鍵盤輸入等。

二、窗口

????????當使用Python的Tkinter庫創建GUI應用程序時,窗口是整個界面的基礎。窗口提供了一個可視化的容器,用于放置各種GUI元素,如按鈕、標簽、文本框等。在Tkinter中,窗口通常稱為Tk對象的實例。

1、創建窗口

????????要創建一個窗口,首先需要導入Tkinter庫,然后創建一個Tk對象的實例,這就是主窗口。通常,可以使用Tk()函數來創建一個窗口實例。

import tkinter as tk# 創建主窗口
root = tk.Tk()

2、設置窗口屬性

可以使用title()方法為窗口設置標題,使用geometry()方法設置窗口的大小和位置。

# 設置窗口標題
root.title("My Window")# 設置窗口大小和位置
root.geometry("400x300+200+100")  # 寬x高+水平偏移量+垂直偏移量

3、顯示窗口

創建窗口后,需要調用mainloop()方法進入Tkinter的主事件循環,以便窗口能夠響應用戶的操作。

# 進入主事件循環
root.mainloop()

4、關閉窗口

在應用程序運行過程中,可以通過調用窗口對象的destroy()方法來關閉窗口。

# 關閉窗口
root.destroy()

5、窗口屬性和方法

窗口對象還提供了一些其他方法和屬性,用于控制窗口的外觀和行為,例如:

  • title:窗口標題
  • geometry:窗口大小和位置
  • config:配置窗口屬性
  • iconbitmap:設置窗口圖標
  • resizable:設置窗口是否可調整大小

6、示例

創建一個簡單的窗口。

import tkinter as tk# 創建主窗口
root = tk.Tk()
root.title("My Window")
root.geometry("400x300+200+100")# 進入主事件循環
root.mainloop()

三、小部件

????????小部件(Widgets)是構成Tkinter GUI界面的基本元素,它們包括各種可視化組件,如按鈕、標簽、文本框、列表框等。Tkinter提供了多種內置的小部件,同時也支持創建自定義的小部件。

1、標簽(Label)

標簽用于顯示文本或圖像,是GUI界面中常用的一種小部件。

import tkinter as tk# 創建主窗口
root = tk.Tk()
root.title("Label Example")# 創建標簽
label = tk.Label(root, text="Hello, Tkinter!")
label.pack()# 進入主事件循環
root.mainloop()

?

2、按鈕(Button)

按鈕用于觸發用戶交互操作,如點擊按鈕執行某些操作。

import tkinter as tk# 按鈕點擊事件處理函數
def button_click():label.config(text="Button Clicked!")# 創建主窗口
root = tk.Tk()
root.title("Button Example")# 創建標簽
label = tk.Label(root, text="Hello, Tkinter!")
label.pack()# 創建按鈕,并綁定點擊事件處理函數
button = tk.Button(root, text="Click Me", command=button_click)
button.pack()# 進入主事件循環
root.mainloop()

?

3、文本框(Entry)

文本框用于接收用戶輸入的文本信息。

import tkinter as tk# 獲取文本框內容并顯示在標簽中
def show_text():text = entry.get()label.config(text=text)# 創建主窗口
root = tk.Tk()
root.title("Entry Example")# 創建文本框
entry = tk.Entry(root)
entry.pack()# 創建按鈕,點擊按鈕顯示文本框內容
button = tk.Button(root, text="Show Text", command=show_text)
button.pack()# 創建標簽用于顯示文本框內容
label = tk.Label(root)
label.pack()# 進入主事件循環
root.mainloop()

?

4、列表框(Listbox)

列表框用于顯示多個選項,并允許用戶選擇其中之一或多個。

import tkinter as tk# 獲取用戶選擇的列表項并顯示在標簽中
def show_selection():selection = listbox.get(tk.ACTIVE)label.config(text=f"Selected Item: {selection}")# 創建主窗口
root = tk.Tk()
root.title("Listbox Example")# 創建列表框
listbox = tk.Listbox(root)
listbox.pack()# 添加選項到列表框中
for item in ["Option 1", "Option 2", "Option 3"]:listbox.insert(tk.END, item)# 創建按鈕,點擊按鈕顯示用戶選擇的列表項
button = tk.Button(root, text="Show Selection", command=show_selection)
button.pack()# 創建標簽用于顯示用戶選擇的列表項
label = tk.Label(root)
label.pack()# 進入主事件循環
root.mainloop()

?

5、文本域(Text)

文本域用于顯示多行文本,通常用于顯示大段文本或允許用戶進行多行輸入。

import tkinter as tk# 獲取文本域內容并顯示在標簽中
def show_text():text = text_area.get("1.0", tk.END)  # 從第一行第一列開始獲取所有文本label.config(text=text)# 創建主窗口
root = tk.Tk()
root.title("Text Example")# 創建文本域
text_area = tk.Text(root, height=5, width=30)
text_area.pack()# 創建按鈕,點擊按鈕顯示文本域內容
button = tk.Button(root, text="Show Text", command=show_text)
button.pack()# 創建標簽用于顯示文本域內容
label = tk.Label(root, wraplength=200)  # 設置標簽文字換行長度
label.pack()# 進入主事件循環
root.mainloop()

?

6、滾動條(Scrollbar)

滾動條用于在小部件中滾動內容,如文本域或列表框。

import tkinter as tk# 創建主窗口
root = tk.Tk()
root.title("Scrollbar Example")# 創建文本域
text_area = tk.Text(root, height=10, width=30)
text_area.pack(side=tk.LEFT, fill=tk.Y)# 創建滾動條
scrollbar = tk.Scrollbar(root, command=text_area.yview)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)# 將文本域與滾動條關聯
text_area.config(yscrollcommand=scrollbar.set)# 進入主事件循環
root.mainloop()

?

7、組合框(Combobox)

組合框是一個下拉菜單,用戶可以從中選擇一個選項。

import tkinter as tk
from tkinter import ttk# 獲取用戶選擇的選項并顯示在標簽中
def show_selection():selection = combobox.get()label.config(text=f"Selected Item: {selection}")# 創建主窗口
root = tk.Tk()
root.title("Combobox Example")# 創建組合框
options = ["Option 1", "Option 2", "Option 3"]
combobox = ttk.Combobox(root, values=options)
combobox.pack()# 創建按鈕,點擊按鈕顯示用戶選擇的選項
button = tk.Button(root, text="Show Selection", command=show_selection)
button.pack()# 創建標簽用于顯示用戶選擇的選項
label = tk.Label(root)
label.pack()# 進入主事件循環
root.mainloop()

?

8、滑塊(Scale)

滑塊允許用戶在預定義的范圍內選擇一個值,通常用于調整參數或設置參數值。

import tkinter as tk# 獲取滑塊的值并顯示在標簽中
def show_value(value):label.config(text=f"Slider Value: {value}")# 創建主窗口
root = tk.Tk()
root.title("Scale Example")# 創建滑塊
scale = tk.Scale(root, from_=0, to=100, orient=tk.HORIZONTAL, command=show_value)
scale.pack()# 創建標簽用于顯示滑塊的值
label = tk.Label(root)
label.pack()# 進入主事件循環
root.mainloop()

?

9、復選框(Checkbutton)

復選框允許用戶選擇或取消選擇一個或多個選項。

import tkinter as tk# 獲取復選框的狀態并顯示在標簽中
def show_state():state = var.get()label.config(text=f"Checkbox State: {state}")# 創建主窗口
root = tk.Tk()
root.title("Checkbutton Example")# 創建變量用于存儲復選框的狀態
var = tk.IntVar()# 創建復選框
checkbutton = tk.Checkbutton(root, text="Check Me", variable=var, command=show_state)
checkbutton.pack()# 創建標簽用于顯示復選框的狀態
label = tk.Label(root)
label.pack()# 進入主事件循環
root.mainloop()

?

10、單選按鈕(Radiobutton)

單選按鈕允許用戶在一組選項中選擇一個選項。

import tkinter as tk# 獲取單選按鈕的值并顯示在標簽中
def show_selection():selection = var.get()label.config(text=f"Selected Option: {selection}")# 創建主窗口
root = tk.Tk()
root.title("Radiobutton Example")# 創建變量用于存儲單選按鈕的值
var = tk.StringVar()# 創建單選按鈕
for option in ["Option 1", "Option 2", "Option 3"]:radiobutton = tk.Radiobutton(root, text=option, variable=var, value=option, command=show_selection)radiobutton.pack()# 創建標簽用于顯示單選按鈕的值
label = tk.Label(root)
label.pack()# 進入主事件循環
root.mainloop()

?

11、文件選擇框(Filedialog)

文件選擇框用于讓用戶選擇文件或目錄。

import tkinter as tk
from tkinter import filedialog# 打開文件選擇框并顯示選擇的文件路徑
def open_file():file_path = filedialog.askopenfilename()label.config(text=f"Selected File: {file_path}")# 創建主窗口
root = tk.Tk()
root.title("Filedialog Example")# 創建按鈕,點擊按鈕打開文件選擇框
button = tk.Button(root, text="Open File", command=open_file)
button.pack()# 創建標簽用于顯示選擇的文件路徑
label = tk.Label(root)
label.pack()# 進入主事件循環
root.mainloop()

四、布局管理器

????????布局管理器(Layout Managers)是Tkinter中用于確定窗口中小部件位置和大小的工具。Tkinter提供了三種主要的布局管理器:Pack、Grid和Place。每種布局管理器都有其特定的方式來組織和排列小部件,以便在窗口中創建期望的布局。

1、Pack 布局管理器

????????Pack布局管理器會自動將小部件按照水平或垂直方向進行堆疊,它會自動調整小部件的大小以適應窗口大小變化,并且可以簡單地實現對小部件的對齊。Pack布局管理器通過pack()方法來指定小部件的排列方式。

import tkinter as tk# 創建主窗口
root = tk.Tk()
root.title("Pack Layout Example")# 創建三個按鈕,并使用Pack布局管理器進行排列
button1 = tk.Button(root, text="Button 1")
button1.pack()button2 = tk.Button(root, text="Button 2")
button2.pack()button3 = tk.Button(root, text="Button 3")
button3.pack()# 進入主事件循環
root.mainloop()

2、Grid 布局管理器

????????Grid布局管理器將窗口劃分為網格,并允許開發者將小部件放置在網格中的特定位置。可以通過指定rowcolumn參數來確定小部件所在的行和列。Grid布局管理器通過grid()方法來指定小部件的位置。

import tkinter as tk# 創建主窗口
root = tk.Tk()
root.title("Grid Layout Example")# 創建三個按鈕,并使用Grid布局管理器進行排列
button1 = tk.Button(root, text="Button 1")
button1.grid(row=0, column=0)button2 = tk.Button(root, text="Button 2")
button2.grid(row=0, column=1)button3 = tk.Button(root, text="Button 3")
button3.grid(row=1, column=0, columnspan=2)# 進入主事件循環
root.mainloop()

3、Place 布局管理器

????????Place布局管理器允許開發者直接指定小部件的位置和大小,相對于父容器的坐標。這種布局管理器通常用于實現更高級別的布局效果,如繪圖或動畫。Place布局管理器通過place()方法來指定小部件的位置和大小。

import tkinter as tk# 創建主窗口
root = tk.Tk()
root.title("Place Layout Example")# 創建一個標簽,并使用Place布局管理器進行定位
label = tk.Label(root, text="Hello, Tkinter!", bg="lightblue")
label.place(x=50, y=50)# 創建一個按鈕,并使用Place布局管理器進行定位
button = tk.Button(root, text="Click Me")
button.place(x=100, y=100)# 進入主事件循環
root.mainloop()

五、事件驅動

????????Tkinter的事件模型基于發布-訂閱(Publish-Subscribe)模式,其中包含了兩個關鍵的概念:事件和事件處理函數。

  • 事件(Event):事件是用戶執行操作時發生的動作,如鼠標點擊、鍵盤輸入等。每個事件都有一個事件類型(如Button-1表示鼠標左鍵點擊)和相關的事件數據(如鼠標點擊的位置)。
  • 事件處理函數(Event Handler):事件處理函數是與特定事件相關聯的函數,當事件發生時,事件處理函數會被調用執行,以響應該事件。

1、Tkinter事件驅動的基本原理

  1. 事件:在Tkinter中,事件可以是鼠標事件、鍵盤事件、窗口事件等,每個事件都有一個特定的類型和相關的屬性,以描述事件的來源和內容。

  2. 事件綁定:通過調用小部件的bind()方法,可以將特定事件與相應的事件處理函數綁定起來。當指定的事件發生時,Tkinter會調用相應的事件處理函數來處理該事件。

  3. 事件處理函數:事件處理函數是用戶自定義的函數,用于處理特定類型的事件。當相應類型的事件發生時,Tkinter會自動調用相應的事件處理函數,并將事件對象作為參數傳遞給該函數。

2、Tkinter事件綁定

????????在Tkinter中,可以通過調用小部件的bind()方法來綁定事件和事件處理函數。bind()方法接受兩個參數:要綁定的事件類型和要調用的事件處理函數。當指定的事件發生時,Tkinter會調用相關的事件處理函數來處理該事件。

示例:綁定鼠標點擊事件

import tkinter as tk# 鼠標點擊事件處理函數
def mouse_click(event):print("Mouse Clicked at", event.x, event.y)# 創建主窗口
root = tk.Tk()
root.title("Event Handling Example")# 創建一個標簽,并在鼠標點擊事件上綁定事件處理函數
label = tk.Label(root, text="Click Here")
label.pack()
label.bind("<Button-1>", mouse_click)  # "<Button-1>"表示鼠標左鍵點擊事件# 進入主事件循環
root.mainloop()

3、常見的Tkinter事件類型

????????Tkinter支持各種不同類型的事件,包括鼠標事件、鍵盤事件、窗口事件等。以下是一些常見的Tkinter事件類型:

  • 鼠標事件:如點擊、釋放、移動等。
  • 鍵盤事件:如按鍵、釋放鍵等。
  • 窗口事件:如窗口關閉、窗口調整大小等。
  • 小部件事件:如焦點進入、焦點離開、滾動條滾動等。

鼠標事件示例

import tkinter as tk# 鼠標點擊事件處理函數
def on_click(event):print("Mouse Clicked at", event.x, event.y)# 鼠標釋放事件處理函數
def on_release(event):print("Mouse Released at", event.x, event.y)# 鼠標移動事件處理函數
def on_move(event):print("Mouse Moved to", event.x, event.y)# 創建主窗口
root = tk.Tk()
root.title("Mouse Events Example")# 創建一個標簽,并綁定鼠標事件處理函數
label = tk.Label(root, text="Click, Release or Move Mouse Here!")
label.pack()label.bind("<Button-1>", on_click)  # 綁定鼠標左鍵點擊事件
label.bind("<ButtonRelease-1>", on_release)  # 綁定鼠標左鍵釋放事件
label.bind("<Motion>", on_move)  # 綁定鼠標移動事件# 進入主事件循環
root.mainloop()

鍵盤事件示例

import tkinter as tk# 鍵盤按鍵事件處理函數
def on_key_press(event):print("Key Pressed:", event.keysym)# 鍵盤釋放鍵事件處理函數
def on_key_release(event):print("Key Released:", event.keysym)# 創建主窗口
root = tk.Tk()
root.title("Keyboard Events Example")# 綁定鍵盤按鍵事件處理函數
root.bind("<KeyPress>", on_key_press)
root.bind("<KeyRelease>", on_key_release)# 進入主事件循環
root.mainloop()

窗口事件示例

import tkinter as tk# 窗口關閉事件處理函數
def on_close():print("Window Closed")root.destroy()  # 銷毀窗口# 創建主窗口
root = tk.Tk()
root.title("Window Events Example")# 綁定窗口關閉事件處理函數
root.protocol("WM_DELETE_WINDOW", on_close)# 進入主事件循環
root.mainloop()

小部件事件示例

import tkinter as tk# 焦點進入事件處理函數
def on_focus_in(event):print("Focus In")# 焦點離開事件處理函數
def on_focus_out(event):print("Focus Out")# 滾動條滾動事件處理函數
def on_scroll(event):print("Scrollbar Scrolled to", event)# 創建主窗口
root = tk.Tk()
root.title("Widget Events Example")# 創建文本框和滾動條
text = tk.Text(root, height=10, width=30)
scrollbar = tk.Scrollbar(root, command=text.yview)
text.config(yscrollcommand=scrollbar.set)
text.pack(side=tk.LEFT)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)# 綁定小部件事件處理函數
text.bind("<FocusIn>", on_focus_in)  # 綁定焦點進入事件
text.bind("<FocusOut>", on_focus_out)  # 綁定焦點離開事件
scrollbar.bind("<Motion>", on_scroll)  # 綁定滾動條滾動事件# 進入主事件循環
root.mainloop()

六、打包為可執行文件

????????將Python Tkinter程序打包成Windows和macOS下的應用程序的過程有些不同。下面將分別介紹如何打包為Windows和macOS下的應用程序。

在Windows下打包為可執行文件:

1、安裝PyInstaller

pip install pyinstaller

2、打包應用程序

在命令行中,切換到Python Tkinter應用程序的目錄,并執行以下命令:

pyinstaller --onefile your_script.py

這將在dist目錄中生成一個名為your_script.exe的可執行文件,即Windows下的可執行文件。

在macOS下打包為應用程序:

?1、安裝PyInstaller

pip install pyinstaller

?2、打包應用程序

在命令行中,切換到Python Tkinter應用程序的目錄,并執行以下命令:

pyinstaller --onefile --windowed your_script.py

這將在dist目錄中生成一個名為your_script.app的macOS應用程序。

PyInstaller參數介紹:

1、基本參數:

  • --onefile:生成一個單個的可執行文件,而不是打包成多個文件。
  • --noconsole:生成的可執行文件不會顯示控制臺窗口。
  • --windowed:生成一個沒有控制臺窗口的可執行文件。

2、文件和路徑相關參數:

  • --distpath:指定生成的可執行文件的輸出目錄。
  • --specpath:指定生成的spec文件的輸出目錄。
  • --workpath:指定工作目錄,PyInstaller在此處將生成臨時文件。

3、數據和資源文件相關參數:

  • --add-data:將額外的數據文件(如圖像、音頻文件等)復制到可執行文件中。語法為`--add-data "source_path;destination_path"。
  • --add-binary:將額外的二進制文件復制到可執行文件中。語法為--add-binary "source_path;destination_path"

4、圖標相關參數:

  • --icon:指定應用程序的圖標文件。

5、其他參數:

  • --clean:在打包之前先清理之前生成的臨時文件和輸出目錄。
  • --debug:生成更詳細的調試信息,用于調試打包過程中的問題。
  • --log-level:指定日志記錄的級別,可以是DEBUG、INFO、WARN、ERROR或CRITICAL。

注意事項:

  • 如果應用程序包含額外的資源文件(如圖像、文本文件等),您可能需要使用--add-data選項告訴PyInstaller將這些文件包含在可執行文件中。
  • 在macOS上打包時,可以使用--icon選項指定應用程序的圖標,例如:--icon=your_icon.icns

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

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

相關文章

每日一題(4)——String連接,替換,比較,查找等

主要是一些字符串的連接&#xff0c; 替換&#xff0c;比較&#xff0c;去首尾空格&#xff0c;查找等操作&#xff1b; class ZiFu{public static void main(String []args){String s1"hello world";String s2new String("hello,world");s2" "…

Vue3判斷變量和對象不為null和undefined

Vue3判斷變量和對象不為null和undefined 一、判斷變量二、判斷對象 一、判斷變量 在 Vue 3 中&#xff0c;你可以使用 JavaScript 提供的常規方式來檢查變量是否不為 null 和不為 undefined。你可以分別使用嚴格不等運算符 ! 來比較變量是否不為 null 和不為 undefined。以下是…

【基于springboot+vue的房屋租賃系統】

介紹 本系統是基于springbootvue的房屋租賃系統&#xff0c;數據庫為mysql&#xff0c;可用于日常學習和畢設&#xff0c;系統分為管理員、房東、用戶&#xff0c;部分截圖如下所示&#xff1a; 部分界面截圖 用戶 管理員 聯系我 微信&#xff1a;Zzllh_

打開服務器遠程桌面連接不上,可能的原因及相應的解決策略

在解決遠程桌面連接不上服務器的問題時&#xff0c;我們首先需要從專業的角度對可能的原因進行深入分析&#xff0c;并據此提出針對性的解決方案。以下是一些可能的原因及相應的解決策略&#xff1a; 一、網絡連接問題 遠程桌面連接需要穩定的網絡支持&#xff0c;如果網絡連接…

金融業務及其他學習資料相關

目錄 金融業務相關學習資料 道路交通安全考試科一學習資料(2023年版) 英語學習資料

ArcGIS提取含有計曲線的等高線

喜歡就關注我們吧&#xff01; 今天我么來看看&#xff0c;如何利用DEM提取含有計曲線的等高線&#xff01; 常規的話我們利用DEM提取的等高線都是不帶計曲線的&#xff0c;無法把計曲線標注出來&#xff0c;今天我們就來看下&#xff0c;如何處理一下哦&#xff01;提取帶有計…

springboot打包目錄解析

一、引言 Java開發中我們使用最多的便是spring框架&#xff0c;比如springboot應用。微服務模式下&#xff0c;每個服務都是一個springboot應用&#xff0c;都會被打包成一個可執行jar包。那么我們有多少人嘗試去了解過這個可執行jar到底是什么&#xff1f;它的結構是什么樣的…

2730. 找到最長的半重復子字符串(c++,滑動窗口)

給你一個下標從 0 開始的字符串 s &#xff0c;這個字符串只包含 0 到 9 的數字字符。 如果一個字符串 t 中至多有一對相鄰字符是相等的&#xff0c;那么稱這個字符串 t 是 半重復的 。例如&#xff0c;0010 、002020 、0123 、2002 和 54944 是半重復字符串&#xff0c;而 00…

Homebrew安裝、 Mac上pyenv的安裝與使用,復制黏貼搞定,網上教程看得眼花繚亂的來看看,簡單明了一步到胃!!

安裝 Homebrew /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)"安裝pyenv brew install pyenv添加到終端使用的配置文件.zshrc、.bashrc 避免不必要的麻煩兩個終端的配置文件都進行添加&#xff0c;文件在當前用戶目…

第四十天 | 509.斐波那契數 70.爬樓梯 746.用最小花費爬樓梯

題目&#xff1a;509.斐波那契數 思路&#xff1a; 1.確定dp[i]含義&#xff1a;第i個斐波拉契數值為dp[i] 2.確定遞推公式&#xff1a;dp[i] dp[i - 1] dp[i - 2] 3.dp數組如何初始化&#xff1a;d[0] 1, dp[1] 1 4.遍歷順序&#xff1a;從前向后 5.打印dp class Soluti…

C語言代碼文件開頭需要的代碼

#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>

淚目!網絡連接中斷的原因,終于找到了!

朋友們&#xff0c;出大事了&#xff01; 不知道多少朋友玩過 DNF 這個游戲&#xff0c;這個我從小學玩到大學的 “破” 游戲&#xff0c;昨天竟然出手游了&#xff01; 我都忘了自己曾幾何時預約過這個手游通知&#xff0c;昨天給我發了條通知信息說游戲已開服。 老玩家直接…

Gitee好用的瀏覽器插件【GiteeTree】

使用gitee的時候&#xff0c;可能拉到別人的項目后&#xff0c;只是想看下某些文件的代碼&#xff0c;但是不得不全部都拉下來&#xff0c;每次點又很麻煩。這個插件【GiteeTree】就很好用了&#xff0c;只需要搜索GiteeTree&#xff0c;然后把插件下載下來

git revert 和 git reset

文章目錄 工作區 暫存區 本地倉庫 遠程倉庫需求&#xff1a;已推送到遠程倉庫&#xff0c;想要撤銷操作git revert &#xff08;添加新的提交來“反做”之前的更改&#xff0c;云端會殘留上次的提交記錄&#xff09;git reset&#xff08;相當于覆蓋上次的提交&#xff09;1.--…

中國科學院植物研究所宋獻軍課題組揭示不同的翻譯后修飾協作調控水稻種子大小的新機制

公眾號&#xff1a;生信漫談&#xff0c;獲取最新科研信息&#xff01; 中國科學院植物研究所宋獻軍課題組揭示不同的翻譯后修飾協作調控水稻種子大小的新機制https://mp.weixin.qq.com/s/ycNgYzACwkYZbo6k0Zqtcw 未來20年&#xff0c;我國將決戰全面建成社會主義現代化國家&…

MySQL筆記第三天(從小白到入門)

文章目錄 MySQL筆記SQL語言介紹數據庫系統關系型數據庫非關系型數據庫SQL和數據庫系統的關系數據庫系統架構 MySQL的介紹概念MySQL的版本 MySQL的DDL操作-重點基本數據庫操作基本表操作 MySQL的DML操作-重點insert-插入數據update-更新數據delete-刪除數據 MySQL的約束-了解概述…

工廠生產管理系統

為應對一些國內驗廠&#xff0c;如大疆等&#xff0c;他們需要客戶有自己的生產管理系統的&#xff0c;但實際很多公司是沒有引入ERP這類的系統的&#xff0c;從而想開發一套簡單的生產管理系統。 參考了網上一個比較古老的StorageMange項目&#xff0c;此項目用到DevExpress的…

數字簽名:確保信息完整性和身份驗證的關鍵技術

在數字時代&#xff0c;信息的安全性和真實性變得至關重要。數字簽名作為一種電子形式的簽名&#xff0c;提供了一種驗證信息來源和確保信息完整性的方法。本文將深入探討數字簽名的概念、工作原理、應用場景以及它如何幫助提高網絡安全性。 數字簽名的概念 數字簽名是一種加密…

C++與Android處理16進制大端/小端數據實例(二百七十六)

簡介&#xff1a; CSDN博客專家&#xff0c;專注Android/Linux系統&#xff0c;分享多mic語音方案、音視頻、編解碼等技術&#xff0c;與大家一起成長&#xff01; 優質專欄&#xff1a;Audio工程師進階系列【原創干貨持續更新中……】&#x1f680; 優質專欄&#xff1a;多媒…

數據庫DCL語句

數據庫DCL語句 介紹&#xff1a; DCL英文全稱是Data Control Language(數據控制語言)&#xff0c;用來管理數據庫用戶、控制數據庫的訪 問權限。 管理用戶&#xff1a; 查詢用戶: select * from mysql.user;創建用戶: create user 用戶名主機名 identified by 密碼;修改用…