V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  sungo  ›  全部回复第 1 页 / 共 1 页
回复总数  16
昵称 sungamma
228 天前
回复了 xiaopanzi 创建的主题 NAS 群晖远程唤醒方案
@sm1314 这个思路很好啊,回头试试看
228 天前
回复了 leonme 创建的主题 NAS 黑群和白群的差异,如何选择?
@xiaotianhu 我是双盘备份,重要数据备份到另一个盘里面。
228 天前
回复了 xuxiake 创建的主题 NAS IPV6 太香了
用 OpenWrt 功能更多,这样可以通过路由只开一个端口,然后用 socat 转发到内网其他电脑,配合 npm ,带锁访问
330 天前
回复了 sungo 创建的主题 Python Python tkinter 如何实现自动滚动的文本框
方案二
```python
import tkinter as tk
from tkinter import messagebox
import threading
import queue
import time


def down():
for i in range(1, 100):
output_queue.put(f"Downloading attachment {i}\n")
time.sleep(0.3)
return


def on_download_click():
try:
download_thread = threading.Thread(target=down, args=())
download_thread.start()
except Exception as e:
messagebox.showerror("消息", "该日期段没有附件下载")


def update_output_text():
# 检查队列是否有新的输出内容
while not output_queue.empty():
output_text.insert(tk.END, output_queue.get())
# 如果用户没有手动滚动,或者手动滚动到底部,则自动滚动到底部
if not fm_main.manually_scrolled or output_text.yview()[1] == 1.0:
output_text.see(tk.END)

# 通过调用 after 方法实现定时刷新
fm_main.after(100, update_output_text)


def on_scroll(*args):
# 判断滚动条是否在底部
scroll_position = scrollbar.get()
if scroll_position[1] == 1.0:
fm_main.manually_scrolled = False
else:
fm_main.manually_scrolled = True


def on_mouse_release(*args):
on_scroll()


def on_key_press(event):
if event.keysym in ["Up", "Down", "Left", "Right"]:
on_scroll()


if __name__ == "__main__":
# os.chdir(path)
# os.system("ls *.zip |xargs -n1 unzip && rm *.zip")

fm_main = tk.Tk()
fm_main.title("邮件附件批量下载_v1.0")
fm_main.geometry("600x300")

fm_main.resizable(0, 0) # 设置窗口 Continuation of the modified code:

# 下载按钮
btn1 = tk.Button(
fm_main,
text="下载",
font=("Arial", 13),
width=25,
height=2,
command=on_download_click,
)
btn1.pack()

scrollbar = tk.Scrollbar(fm_main)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

output_text = tk.Text(fm_main, font=("Arial", 12), width=60, height=10)
output_text.pack(side=tk.LEFT, fill=tk.BOTH)

output_text.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=output_text.yview)

# ... 其他代码 ...

# 创建队列对象用于线程间通信
output_queue = queue.Queue()

# 启动定时刷新函数
fm_main.after(100, update_output_text)

# 设置滚动条手动滚动的回调函数
output_text.bind("<MouseWheel>", on_scroll)
output_text.bind("<Button-4>", on_scroll)
output_text.bind("<Button-5>", on_scroll)

scrollbar.bind("<MouseWheel>", on_scroll)
scrollbar.bind("<Button-4>", on_scroll)
scrollbar.bind("<Button-5>", on_scroll)

scrollbar.bind("<B1-Motion>", on_scroll)
scrollbar.bind("<ButtonRelease-1>", on_mouse_release)

# 方向键事件绑定
fm_main.bind("<Up>", on_key_press)
fm_main.bind("<Down>", on_key_press)
fm_main.bind("<Left>", on_key_press)
fm_main.bind("<Right>", on_key_press)

# 标记手动滚动状态的变量
fm_main.manually_scrolled = False

fm_main.mainloop()
```
330 天前
回复了 sungo 创建的主题 Python Python tkinter 如何实现自动滚动的文本框
最后解决了问题,两个方案,一是用 pyqt5 ,设置文本框只读,自动就达成目的。
抽奖试试看
332 天前
回复了 sungo 创建的主题 问与答 有什么压缩软件能差异压缩
@jim9606 用这个 lzma 压缩后,发现只有 8m 。
遇到过假死的情况,就是上传文件时
抽一个
360 天前
回复了 flypei 创建的主题 推广 元旦 T 楼! 送 Google One 2T + 京东 E 卡 300 元
@sungo 看岔了,千分之一
360 天前
回复了 flypei 创建的主题 推广 元旦 T 楼! 送 Google One 2T + 京东 E 卡 300 元
现在还在 1%,元旦 happy
360 天前
回复了 sungo 创建的主题 Python Python tkinter 如何实现自动滚动的文本框
@nerkeler 输出是从上往下输出的,当然希望不停刷新显示最后一列,也就是最新的输出了
361 天前
回复了 sungo 创建的主题 Python Python tkinter 如何实现自动滚动的文本框
倒序排列也可以。之所以正序排列是直接让 poe 把输出转换成 gui 的,也没想到那么多。其实这些都不是啥必须的需求,只是想解决这个常见的问题。
362 天前
回复了 sungo 创建的主题 Python Python tkinter 如何实现自动滚动的文本框
应该不行,我回头试试看。chatgpt3.5 问了几次,要不能自动滚,要不滚不了。不知道 4.0 的能不能行
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5344 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 07:20 · PVG 15:20 · LAX 23:20 · JFK 02:20
Developed with CodeLauncher
♥ Do have faith in what you're doing.