【问题标题】:Not sure what to put inside try.. except.. to handle non-existent string不知道在里面放什么试试……除了……处理不存在的字符串
【发布时间】:2018-10-18 03:46:02
【问题描述】:

当我在不复制任何内容的情况下运行代码时,它会报错。如果我最初复制一些字符串然后运行代码,它工作正常(参见this clip)。

即使我最初没有复制任何字符串,我也希望代码能够正常运行,然后如果我确实复制了一些,它将对字符串进行切片。

from tkinter import *
from tkinter import Tk
from urllib import parse

root = Tk()
root.geometry('304x70')
lbl=Label(root, text = "Nothing Here")
lbl.pack()

def check_clipboard(window):
    clip = root.clipboard_get()
    clip = parse.unquote(clip)[45:]

    root.clipboard_clear()
    root.clipboard_append(clip)
    lbl.configure(text= clip)


def run_listener(window, interval):
    check_clipboard(window)
    root.after(interval, run_listener, window, interval)

# Not sure what to put here:
#try:
#   ???
#except:
#   ??? 


run_listener(root, 5000)


root.mainloop()

我查看了一些使用 try.. except.. 的帖子 [1, 2] 但我找不到它们适用于我的特定问题。

【问题讨论】:

  • 只用我的眼睛我找不到哪里会抛出错误。 ""[45:] 也是一个有效的表达式,它将返回一个空字符串。那么哪一行会报错呢?

标签: python error-handling


【解决方案1】:

修改 check_clipboard() 以仅在实际复制任何内容时处理剪辑:

def check_clipboard(window):
    clip = root.clipboard_get()
    if len(clip)>45:                     # check if there's enough data in the string for the next line to work properly
        clip = parse.unquote(clip)[45:]

        root.clipboard_clear()
        root.clipboard_append(clip)
        lbl.configure(text= clip)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多