我刚刚安装了PyCharm并打开了我在IDLE中使用的脚本,它执行了一些字符串操作然后将其复制到剪贴板,但是当我在PyCharm中运行它时它不起作用。
from tkinter import Tk
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append("test")
r.destroy()
当我在IDLE中运行时,我可以粘贴" test"之后,但是在PyCharm中它只是说"过程完成了退出代码0"但剪贴板中没有任何内容(即使在运行之前有)。我有Python 3.5作为选定的解释器。
答案 0 :(得分:2)
如果操作剪贴板并且程序很快关闭太快,似乎有问题。下面的程序对我有用,但是当root.after
的调用仅使用一毫秒的延迟时,它是不可靠的。尝试了其他可能性,但下面的代码应该有效:
import random
import string
import tkinter
def main():
root = tkinter.Tk()
root.after_idle(run_code, root)
root.after(100, root.destroy)
root.mainloop()
def run_code(root):
root.withdraw()
root.clipboard_clear()
root.clipboard_append(''.join(random.sample(string.ascii_letters, 10)))
print('Clipboard is ready.')
if __name__ == '__main__':
main()
以下是该程序稍微有用的版本,并演示您可以多次调用root.after_idle
以顺序方式运行代码。它的设计主要用于处理命令行参数并将它们发送到剪贴板:
import sys
import tkinter
def main(argv):
root = tkinter.Tk()
root.after_idle(root.withdraw)
root.after_idle(root.clipboard_clear)
root.after_idle(root.clipboard_append, ' '.join(argv[1:]))
root.after_idle(print, 'The clipboard is ready.')
root.after(100, root.destroy)
root.mainloop()
return 0
if __name__ == '__main__':
sys.exit(main(sys.argv))