介绍一下 threading 和 tkinter
“新人报道”
新人报道
Tkinter是python的标准GUI库,python使用Tkinter可以快速的创建GUI应用程序
https://www.runoob.com/python/python-gui-tkinter.html
from tkinter import messagebox #提示框模块
import tkinter as tk #将tkinter命名为tk
top = tk.Tk()
#进入消息循环
top.mainloop()
threading
threading是py中用于多线程编程的内置模块,用于创建和管理线程。
import threading
# 定义一个函数作为线程的执行体
def worker():
print("Thread started")
# 执行一些耗时操作
for i in range(5):
print(f"Working... {i}")
print("Thread finished")
# 创建一个线程对象
thread = threading.Thread(target=worker)
# 启动线程
thread.start()
# 等待线程结束
thread.join()
print("Main thread finished")
--------------------------------------------
输出示例:
Thread started
Working... 0
Working... 1
Working... 2
Working... 3
Working... 4
Thread finished
Main thread finished
---------------------------------------------
基本用法:
import threading
from selenium.webdriver.common.by import By
from selenium import webdriver
import time
def admin_login(url, username, password):
driver = webdriver.Chrome()
driver.get(url)
driver.find_element(By.XPATH, "//input[@placeholder='请输入用户名']").send_keys(username)
driver.find_element(By.XPATH, "//input[@placeholder='请输入密码']").send_keys(password)
driver.find_element(By.XPATH, "//button[contains(.,'登录')]").click()
time.sleep(1)
# 手动关闭页面才能停止自动化
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
pass
driver.quit()
def safe_admin_click():
url = entry.get()
username = "xxxxxx"
password = "xxxxxx"
# 1.创建并启动线程来运行 Selenium 脚本
t = threading.Thread(target=admin_login, args=(url, username, password)) #target后跟函数名,args后跟传参
# 2.启动线程
t.start()
#3.等待线程完成
t.join()
-----------------------------------------------------
4.传递参数给线程函数
def test(name):
print(f"Hello,{name}")
# 创建带参数的线程
thread = threading.Thread(target=test,args=("Mason",))
-----------------------------------------------------
5.设置线程名称
thread = threading.Thread(target=test,name="test")
-----------------------------------------------------
6.使用锁保护共享资源
# 创建锁对象
lock = threading.Lock()
def increment():
# counter 为全局变量
global counter
#获取锁
lock.acquire()
try:
counter += 1
finally:
#释放锁
lock.release()
#创建多个线程并启动
threads = []
for _ in range(10):
t = threading.Thread(target=increment)
t.start
t.append(thread)
# 等待所有线程完成
for t in threads:
t.join()
# 输出结果可能小于100,因为没有保护共享资源
print(counter)
大佬
新人就搞这个?这哪里是新人,这是大佬
这个能是心热?这不是大佬吗!