好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 tianmenghuan 于 2024-6-11 10:54 编辑
[Python] 纯文本查看 复制代码 from tkinter import Tk, Label, Entry, Button
import time
from threading import Thread
import pygame
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.common.exceptions import TimeoutException
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
# --------------------本次思路是-------------------------------
# 1.先寻找新的消息数量找到就报警
# 2.找到后鼠标移动过去
# 3.在出现的聊天框里面再次寻找出现的新的消息数量,并点击
# 4.找到文本框元素并输入文本,最后点击发送
# 此项pass--不可使用留待以后学习更多知识之后看下能否完善
# --------------------------------------------------------------
# 设置浏览器的用户数据目录
chrome_options = Options()
chrome_options.add_argument(
"--user-data-dir=C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data\\Default")
# 初始化 Chrome 浏览器
# 创建全局变量 driver
driver = webdriver.Chrome(options=chrome_options)
def wait_for_inputs():
while not entry1.get() or not entry2.get():
root.update_idletasks() # 更新界面
# 用于等待的函数
def wait_for_element(driver0, xpath, timeout=30):
try:
element = WebDriverWait(driver, timeout).until(
ec.presence_of_element_located((By.XPATH, xpath))
)
return element
except TimeoutException:
return None
def open_chrome():
wait_for_inputs() # 等待用户输入
driver.get("https://www.douyin.com/user/self?showTab=post") # 请将此处的网址替换为你要跳转的实际网址
# time.sleep(40)
def run_code():
"""
执行具体的操作
"""
current_cycle = 0 # 初始化当前循环次数为 0
for _ in range(int(entry2.get())):
# 在循环中使用
current_cycle += 1 # 在每次循环开始前增加循环次数
root.title(f"抖音监控私信 - 第 {current_cycle} 次循环") # 更新标题
if current_cycle == int(entry2.get()):
root.title("当前循环结束")
try:
# element = wait_for_element(driver,
# "/html/body/div[2]/div/div[3]/div[1]/div[1]/header/div/div/div["
# "2]/div/pace-island/div/ul[2]/div/li/div/div/div[3]/div/div/div[1]/div/div["
# "2]/div/div[1]/div/div/div[3]/div")
# 登录成功后的页面直接查询等待是否有新的信息出现
element = wait_for_element(driver,
"/html/body/div[2]/div/div[3]/div[1]/div[1]/header/div/div/div["
"2]/div/pace-island/div/ul[2]/div/li/div/div/div[2]/div")
if element: # 如果出现新的信息
# 元素找到,执行操作
value = element.text
print("元素的值:", value)
# 在窗口上显示信息
print("出现新的信息,开始执行警报")
# 初始化 pygame 的混音器
pygame.mixer.init()
# 加载声音文件
sound = pygame.mixer.Sound("D:/mp3/XX.wav")
# 播放声音
sound.play()
pygame.time.wait(2000) # 等待 2 秒
# 停止音乐
pygame.mixer.music.stop()
tk_label.config(text="注意有新的信息出现,请及时查看")
tk_label.after(10000, lambda: tk_label.config(text=""))
# 将鼠标移动到元素位置并点击
action = webdriver.ActionChains(driver)
action.move_to_element(element).click().perform()
# 查找点击信息后在聊天框出现的信息,这个是一定会找到的
element = wait_for_element(driver,
"/html/body/div[2]/div/div[3]/div[1]/div[1]/header/div/div/div["
"2]/div/pace-island/div/ul[2]/div/li/div/div/div[3]/div/div/div[1]/div/div["
"2]/div/div[1]/div/div/div[3]/div")
action = webdriver.ActionChains(driver)
action.move_to_element(element).click().perform()
# 找到文本框 进行输入 文本后面+\n 这个功能不好,容易发送失败
text_block = driver.find_element(By.CLASS_NAME, "public-DraftStyleDefault-block")
text_block.send_keys(
"你好,世界")
element0 = driver.find_element(By.CLASS_NAME, "sCp7KhBv.e2e-send-msg-btn")
print("准备进行点击发送按钮")
# 执行鼠标点击操作
element0.click()
# 点击退出会话
element2 = driver.find_element(By.CLASS_NAME, "F2qAlnLO")
element2.click()
# # 等待用户输入的间隔时间
time.sleep(int(entry1.get()))
else:
# 元素未找到,处理情况
print("暂时没有新的消息,跳过")
tk_label.config(text="暂时没有新的消息,跳过")
tk_label.after(5000, lambda: tk_label.config(text=""))
except NoSuchElementException as e:
print(f"找不到元素:{e}")
def thread_runner():
"""
在新线程中运行 run_code 函数
"""
Thread(target=run_code).start()
root = Tk()
root.title("抖音监控私信")
root.geometry("250x110") # 设置窗口大小为 300x100
tk_label = Label(root, text="结果展示", width=30, bd=10, bg="yellow")
tk_label.pack(pady=3)
# 创建第一个输入框和其上方的文字标签
label1 = Label(root, text="间隔时间:")
label1.pack()
label1.place(x=0, y=50)
entry1 = Entry(root, width=8)
entry1.pack()
entry1.place(x=60, y=50)
# 创建第二个输入框和其上方的文字标签
label2 = Label(root, text="循环次数:")
label2.pack()
label2.place(x=0, y=80)
entry2 = Entry(root, width=8)
entry2.pack()
entry2.place(x=60, y=80)
# 设置按钮的函数
def set_buttons():
button2 = Button(root, text="登录", width=5, command=open_chrome)
button2.pack(pady=10)
button2.place(x=135, y=60)
button = Button(root, text="运行", width=5, command=thread_runner)
button.pack(pady=10)
button.place(x=195, y=60)
set_buttons()
root.mainloop()
2024-4-16 更新处理陌生人消息并回关陌生人,有不足的地方欢迎各位大佬指点
[Python] 纯文本查看 复制代码 from tkinter import Tk, Label, Entry, Button
import time
from threading import Thread
import pygame
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.common.exceptions import TimeoutException
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
# --------------------本次思路是针对陌生人消息不显示私信数量的问题进行改进-------------------------------
# 1.先寻找私信图标,
# 2.找到后鼠标移动过去
# 方法一:
# 1.在出现的聊天框里面先寻找出现的新的消息数量,并点击
# 2.找到文本框元素并输入文本,最后点击发送
# 3.再下一轮寻找中如果没有新的私信信息 那就找陌生人消息
# 4.找到就点击一下 然后再发送文本
# 5.回关好友,再返回到聊天框
# 此项pass--不可使用留待以后学习更多知识之后看下能否完善
# --------------------------------------------------------------
# 设置浏览器的用户数据目录
chrome_options = Options()
chrome_options.add_argument(
"--user-data-dir=C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data\\Default")
# 初始化 Chrome 浏览器
# 创建全局变量 driver
driver = webdriver.Chrome(options=chrome_options)
def wait_for_inputs():
while not entry1.get() or not entry2.get():
root.update_idletasks() # 更新界面
# 用于等待的函数
def wait_for_element(driver0, xpath, timeout=10):
try:
element = WebDriverWait(driver, timeout).until(
ec.presence_of_element_located((By.XPATH, xpath))
)
return element
except TimeoutException:
return None
def open_chrome():
wait_for_inputs() # 等待用户输入
driver.get("https://www.douyin.com/user/self?showTab=post") # 请将此处的网址替换为你要跳转的实际网址
# time.sleep(40)
def run_code():
"""
执行具体的操作
"""
current_cycle = 0 # 初始化当前循环次数为 0
for _ in range(int(entry2.get())):
# 在循环中使用
current_cycle += 1 # 在每次循环开始前增加循环次数
root.title(f"抖音监控私信 - 第 {current_cycle} 次循环") # 更新标题
if current_cycle == int(entry2.get()):
root.title("当前循环结束")
try:
# 登录成功后的页面直接查询等待是否有新的信息出现
element = wait_for_element(driver,
"/html/body/div[2]/div/div[3]/div[1]/div[1]/header/div/div/div["
"2]/div/pace-island/div/ul[2]/div/li/div/div/div[2]/div")
if element: # 如果出现新的信息 元素找到,执行操作
value = element.text
print("元素的值:", value)
# 在窗口上显示信息
print("出现新的信息,开始执行警报")
# 初始化 pygame 的混音器
pygame.mixer.init()
# 加载声音文件
sound = pygame.mixer.Sound("D:/mp3/XX.wav")
# 播放声音
sound.play()
pygame.time.wait(2000) # 等待 2 秒
# 停止音乐
pygame.mixer.music.stop()
tk_label.config(text="注意有新的信息出现,请及时查看")
tk_label.after(10000, lambda: tk_label.config(text=""))
# 将鼠标移动到元素位置并点击
action = webdriver.ActionChains(driver)
action.move_to_element(element).click().perform()
# 查找点击信息后在聊天框出现的信息,这个是一定会找到的
element = wait_for_element(driver,
"/html/body/div[2]/div/div[3]/div[1]/div[1]/header/div/div/div["
"2]/div/pace-island/div/ul[2]/div/li/div/div/div[3]/div/div/div[1]/div/div["
"2]/div/div[1]/div/div/div[3]/div")
action = webdriver.ActionChains(driver)
action.move_to_element(element).click().perform()
# 找到文本框 进行输入 文本后面+\n 这个功能不好,容易发送失败
text_block = driver.find_element(By.CLASS_NAME, "public-DraftStyleDefault-block")
text_block.send_keys(
"你好,详看个人资料")
element0 = driver.find_element(By.CLASS_NAME, "sCp7KhBv.e2e-send-msg-btn")
print("准备进行点击发送按钮")
# 执行鼠标点击操作
element0.click()
# 点击退出会话
element2 = driver.find_element(By.CLASS_NAME, "F2qAlnLO")
element2.click()
# # 等待用户输入的间隔时间
time.sleep(int(entry1.get()))
else:
# 元素未找到,处理情况
print("暂时没有新的私信数量消息,开始执行查找是否有新的陌生人消息")
element = wait_for_element(driver,
"//p[contains(text(), '私信')]")
if element: # 如果找到私信图标
# 元素找到,执行操作
print("找到私信图片,鼠标即将移动点击")
# 将鼠标移动到元素位置并点击
action = webdriver.ActionChains(driver)
action.move_to_element(element).click().perform()
time.sleep(2)
# 查看是否有陌生人新的消息
# element = wait_for_element(driver,
# "/html/body/div[2]/div/div[3]/div[1]/div[1]/header/div/div/div["
# "2]/div/pace-island/div/ul[2]/div/li/div/div/div[3]/div/div/div["
# "1]/div/div[2]/div/div[4]/div/div/div[1]/div")
element = driver.find_element(By.CLASS_NAME, "TQyd2bgK") # TQyd2bgK陌生人图标元素
if element:
print("找到陌生人图标,开始点击")
action = webdriver.ActionChains(driver)
action.move_to_element(element).click().perform()
time.sleep(5)
# tJjNB1rt ge6Vyp_V 陌生人消息数量元素
# //*[@id="island_b69f5"]/div/ul[2]/div/li/div/div/div[3]/div/div/div[1]/div/div[1]/div[1]
# JkInzlFQ 这个是陌生人返回按钮元素 上面的也是
element = driver.find_element(By.CLASS_NAME, "tJjNB1rt.ge6Vyp_V") # tJjNB1rt ge6Vyp_V 陌生人消息数量元素
if element:
print("出现新的陌生人信息,开始执行警报")
# 初始化 pygame 的混音器
pygame.mixer.init()
# 加载声音文件
sound = pygame.mixer.Sound("D:/mp3/XX.wav")
# 播放声音
sound.play()
pygame.time.wait(2000) # 等待 2 秒
# 停止音乐
pygame.mixer.music.stop()
tk_label.config(text="注意有新的陌生人信息出现,请及时查看")
tk_label.after(10000, lambda: tk_label.config(text=""))
# 将鼠标移动到元素位置并点击
print("开始点击陌生人消息")
action = webdriver.ActionChains(driver)
action.move_to_element(element).click().perform()
# 找到文本框 进行输入 文本后面+\n 这个功能不好,容易发送失败
text_block = driver.find_element(By.CLASS_NAME, "public-DraftStyleDefault-block")
text_block.send_keys(
"你好,详看个人资料")
element0 = driver.find_element(By.CLASS_NAME, "sCp7KhBv.e2e-send-msg-btn")
print("准备进行点击发送按钮")
# 执行鼠标点击操作
element0.click()
# SHV6n6VV 回关元素
print("准备点击回关钮")
element = driver.find_element(By.CLASS_NAME, "SHV6n6VV") # SHV6n6VV 这个是陌生人回关按钮元素
action = webdriver.ActionChains(driver)
action.move_to_element(element).click().perform()
time.sleep(5)
print("操作完成,开始返回到正常聊天列表")
element = driver.find_element(By.CLASS_NAME, 'JkInzlFQ') # JkInzlFQ 这个是陌生人返回按钮元素
print("开始点击返回按钮")
action = webdriver.ActionChains(driver)
action.move_to_element(element).click().perform()
else:
print("暂时没有陌生人的消息,跳过")
tk_label.config(text="暂时没有陌生人的消息,跳过")
tk_label.after(5000, lambda: tk_label.config(text=""))
except NoSuchElementException as e:
print(f"找不到元素:{e}")
def thread_runner():
"""
在新线程中运行 run_code 函数
"""
Thread(target=run_code).start()
root = Tk()
root.title("抖音监控私信")
root.geometry("250x110") # 设置窗口大小为 300x100
tk_label = Label(root, text="结果展示", width=30, bd=10, bg="yellow")
tk_label.pack(pady=3)
# 创建第一个输入框和其上方的文字标签
label1 = Label(root, text="间隔时间:")
label1.pack()
label1.place(x=0, y=50)
entry1 = Entry(root, width=8)
entry1.pack()
entry1.place(x=60, y=50)
# 创建第二个输入框和其上方的文字标签
label2 = Label(root, text="循环次数:")
label2.pack()
label2.place(x=0, y=80)
entry2 = Entry(root, width=8)
entry2.pack()
entry2.place(x=60, y=80)
# 设置按钮的函数
def set_buttons():
button2 = Button(root, text="登录", width=5, command=open_chrome)
button2.pack(pady=10)
button2.place(x=135, y=60)
button = Button(root, text="运行", width=5, command=thread_runner)
button.pack(pady=10)
button.place(x=195, y=60)
set_buttons()
root.mainloop()
2024-6-11 更新处理程序和手机同时回复时出现过期元素的问题,有不足的地方欢迎各位大佬指点
[Python] 纯文本查看 复制代码 from tkinter import Tk, Label, Entry, Button
import time
from threading import Thread
import pygame
import selenium
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.common.exceptions import TimeoutException
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
# --------------------本次思路是针对陌生人消息不显示私信数量的问题进行改进-------------------------------
# 1.先寻找私信图标,
# 2.找到后鼠标移动过去
# 方法一:
# 1.在出现的聊天框里面先寻找出现的新的消息数量,并点击
# 2.找到文本框元素并输入文本,最后点击发送
# 3.再下一轮寻找中如果没有新的私信信息 那就找陌生人消息
# 4.找到就点击一下 然后再发送文本
# 5.回关好友,再返回到聊天框
# 此项pass--不可使用留待以后学习更多知识之后看下能否完善
# --------------------------------------------------------------
# 设置浏览器的用户数据目录
chrome_options = Options()
chrome_options.add_argument(
"--user-data-dir=C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data\\Default")
# 初始化 Chrome 浏览器
# 创建全局变量 driver
driver = webdriver.Chrome(options=chrome_options)
def wait_for_inputs():
while not entry1.get() or not entry2.get():
root.update_idletasks() # 更新界面
# 用于等待的函数
def wait_for_element(driver0, xpath, timeout=10):
try:
element = WebDriverWait(driver, timeout).until(
ec.presence_of_element_located((By.XPATH, xpath))
)
return element
except TimeoutException:
return None
def open_chrome():
wait_for_inputs() # 等待用户输入
driver.get("https://www.douyin.com/user/self?showTab=post") # 请将此处的网址替换为你要跳转的实际网址
# time.sleep(40)
def run_code():
"""
执行具体的操作
"""
current_cycle = 0 # 初始化当前循环次数为 0
for _ in range(int(entry2.get())):
# 在循环中使用
current_cycle += 1 # 在每次循环开始前增加循环次数
root.title(f"抖音监控私信 - 第 {current_cycle} 次循环") # 更新标题
if current_cycle == int(entry2.get()):
root.title("当前循环结束")
try:
# //*[@id="island_b69f5"]/div/ul[2]/div/li/div/div/div[2]/span/span
# 登录成功后的页面直接查询等待是否有新的信息出现
# element = wait_for_element(driver,
# "/html/body/div[2]/div/div[3]/div[1]/div[1]/header/div/div/div["
# "2]/div/pace-island/div/ul[2]/div/li/div/div/div[2]/div")
element = wait_for_element(driver, '//*[@id="island_b69f5"]/div/ul[2]/div/li/div/div/div[2]/span/span')
if element: # 如果出现新的信息 元素找到,执行操作
value = element.text
print("元素的值:", value)
# 在窗口上显示信息
print("出现新的信息,开始执行警报")
# 初始化 pygame 的混音器
pygame.mixer.init()
# 加载声音文件
sound = pygame.mixer.Sound("D:/mp3/XX.wav")
# 播放声音
sound.play()
pygame.time.wait(2000) # 等待 2 秒
# 停止音乐
pygame.mixer.music.stop()
tk_label.config(text="注意有新的信息出现,请及时查看")
tk_label.after(10000, lambda: tk_label.config(text=""))
# 将鼠标移动到元素位置并点击
action = webdriver.ActionChains(driver)
action.move_to_element(element).click().perform()
# 查找点击信息后在聊天框出现的信息,这个是一定会找到的
element = wait_for_element(driver,
'//*[@id="island_b69f5"]/div/ul[2]/div/li/div/div/div[3]/div/div/div['
'1]/div/div[2]/div/div[1]/div/div/div[3]/span/span')
# element = wait_for_element((driver, '//*[@id="island_b69f5"]/div/ul[2]/div/li/div/div/div[3]/div/div/div[1]/div/div[2]/div/div[1]/div/div/div[3]/span/span')
action = webdriver.ActionChains(driver)
action.move_to_element(element).click().perform()
# 找到文本框 进行输入 文本后面+\n 这个功能不好,容易发送失败
text_block = driver.find_element(By.CLASS_NAME, "public-DraftStyleDefault-block")
text_block.send_keys(
"你好,我这边是顺翔云仓,如果没有回复您可以直接电联,详看个人资料")
element0 = driver.find_element(By.CLASS_NAME, "sCp7KhBv.e2e-send-msg-btn")
print("准备进行点击发送按钮")
# 执行鼠标点击操作
element0.click()
# 点击退出会话
element2 = driver.find_element(By.CLASS_NAME, "F2qAlnLO")
element2.click()
# # 等待用户输入的间隔时间
time.sleep(int(entry1.get()))
else:
# 元素未找到,处理情况
print("暂时没有新的私信数量消息,开始执行查找是否有新的陌生人消息")
element = wait_for_element(driver,
"//p[contains(text(), '私信')]")
if element: # 如果找到私信图标
# 元素找到,执行操作
print("找到私信图片,鼠标即将移动点击")
# 将鼠标移动到元素位置并点击
action = webdriver.ActionChains(driver)
action.move_to_element(element).click().perform()
time.sleep(2)
# 查看是否有陌生人新的消息
# element = wait_for_element(driver,
# "/html/body/div[2]/div/div[3]/div[1]/div[1]/header/div/div/div["
# "2]/div/pace-island/div/ul[2]/div/li/div/div/div[3]/div/div/div["
# "1]/div/div[2]/div/div[4]/div/div/div[1]/div")
element = driver.find_element(By.CLASS_NAME, "TQyd2bgK") # TQyd2bgK陌生人图标元素
if element:
print("找到陌生人图标,开始点击")
action = webdriver.ActionChains(driver)
action.move_to_element(element).click().perform()
time.sleep(5)
# tJjNB1rt ge6Vyp_V 陌生人消息数量元素
# //*[@id="island_b69f5"]/div/ul[2]/div/li/div/div/div[3]/div/div/div[1]/div/div[1]/div[1]
# JkInzlFQ 这个是陌生人返回按钮元素 上面的也是
element = driver.find_element(By.CLASS_NAME, "tJjNB1rt.ge6Vyp_V") # tJjNB1rt ge6Vyp_V 陌生人消息数量元素
if element:
print("出现新的陌生人信息,开始执行警报")
# 初始化 pygame 的混音器
pygame.mixer.init()
# 加载声音文件
sound = pygame.mixer.Sound("D:/mp3/XX.wav")
# 播放声音
sound.play()
pygame.time.wait(2000) # 等待 2 秒
# 停止音乐
pygame.mixer.music.stop()
tk_label.config(text="注意有新的陌生人信息出现,请及时查看")
tk_label.after(10000, lambda: tk_label.config(text=""))
# 将鼠标移动到元素位置并点击
print("开始点击陌生人消息")
action = webdriver.ActionChains(driver)
action.move_to_element(element).click().perform()
# 找到文本框 进行输入 文本后面+\n 这个功能不好,容易发送失败
text_block = driver.find_element(By.CLASS_NAME, "public-DraftStyleDefault-block")
text_block.send_keys(
"你好,我这边是顺翔云仓,如果没有回复您可以直接电联,详看个人资料")
element0 = driver.find_element(By.CLASS_NAME, "sCp7KhBv.e2e-send-msg-btn")
print("准备进行点击发送按钮")
# 执行鼠标点击操作
element0.click()
# SHV6n6VV 回关元素
print("准备点击回关钮")
element = driver.find_element(By.CLASS_NAME, "SHV6n6VV") # SHV6n6VV 这个是陌生人回关按钮元素
action = webdriver.ActionChains(driver)
action.move_to_element(element).click().perform()
time.sleep(5)
print("操作完成,开始返回到正常聊天列表")
element = driver.find_element(By.CLASS_NAME, 'JkInzlFQ') # JkInzlFQ 这个是陌生人返回按钮元素
print("开始点击返回按钮")
action = webdriver.ActionChains(driver)
action.move_to_element(element).click().perform()
else:
print("暂时没有陌生人的消息,跳过")
tk_label.config(text="暂时没有陌生人的消息,跳过")
tk_label.after(5000, lambda: tk_label.config(text=""))
except NoSuchElementException as e:
print(f"找不到元素:{e}")
print("目前没有陌生人的消息,此项查询跳过")
tk_label.config(text="目前没有陌生人的消息,此项查询跳过")
tk_label.after(5000, lambda: tk_label.config(text=""))
except TimeoutException:
print("元素超时未找到,跳过当前循环")
continue
except selenium.common.exceptions.StaleElementReferenceException:
print("遇到过时元素引用异常,跳过并重新开始")
continue
def thread_runner():
"""
在新线程中运行 run_code 函数
"""
Thread(target=run_code).start()
root = Tk()
root.title("抖音监控私信")
root.geometry("250x110") # 设置窗口大小为 300x100
tk_label = Label(root, text="结果展示", width=30, bd=10, bg="yellow")
tk_label.pack(pady=3)
# 创建第一个输入框和其上方的文字标签
label1 = Label(root, text="间隔时间:")
label1.pack()
label1.place(x=0, y=50)
entry1 = Entry(root, width=8)
entry1.pack()
entry1.place(x=60, y=50)
# 创建第二个输入框和其上方的文字标签
label2 = Label(root, text="循环次数:")
label2.pack()
label2.place(x=0, y=80)
entry2 = Entry(root, width=8)
entry2.pack()
entry2.place(x=60, y=80)
# 设置按钮的函数
def set_buttons():
button2 = Button(root, text="登录", width=5, command=open_chrome)
button2.pack(pady=10)
button2.place(x=135, y=60)
button = Button(root, text="运行", width=5, command=thread_runner)
button.pack(pady=10)
button.place(x=195, y=60)
set_buttons()
root.mainloop()
|
免费评分
-
查看全部评分
|