tag.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import os
  2. import tkinter
  3. from PIL import Image, ImageTk
  4. class Tk:
  5. def __init__(self, imagePath=None, imageOk="OK"):
  6. if imagePath is None or imagePath == "":
  7. imagePath = os.path.join(os.path.dirname(os.path.abspath(__file__)), "jpg")
  8. self.jpgs = [os.path.join(imagePath, x) for x in os.listdir(imagePath) if str(x).endswith(".jpg") and "-" not in x and "_" in x]
  9. self.index = 0
  10. self.OK = imageOk
  11. self.jpg = None
  12. self.imgTk = None
  13. self.tk = tkinter.Tk()
  14. self.tk.title("TAG FILE")
  15. self.tk.geometry("300x200")
  16. self.tk.columnconfigure(0, weight=1)
  17. self.tk.columnconfigure(1, weight=1)
  18. self.tk.rowconfigure(0, weight=1, minsize=80)
  19. self.tk.rowconfigure(1, weight=1, minsize=20)
  20. self.tk.rowconfigure(2, weight=1, minsize=20)
  21. self.image = tkinter.Label(self.tk)
  22. self.image.grid(row=0, column=0, rowspan=2, columnspan=2)
  23. self.entry = tkinter.Entry(self.tk, width=10)
  24. self.entry.grid(row=1, column=0, sticky="se")
  25. self.buttonOK = tkinter.Button(self.tk, text="OK", command=self.tagOK)
  26. self.buttonOK.grid(row=1, column=1, sticky="sw")
  27. self.buttonNext = tkinter.Button(self.tk, width=15, text="NEXT", command=self.tagNext)
  28. self.buttonNext.grid(row=2, column=0, columnspan=2)
  29. self.tk.bind('<Return>', self.pressKey)
  30. self.tk.bind('<Down>', self.pressKey)
  31. self.tagNext()
  32. self.tk.mainloop()
  33. def pressKey(self, key):
  34. if key.keysym in ["Down"]:
  35. self.tagNext()
  36. elif key.keysym in ["Return"]:
  37. self.tagOK()
  38. def tagOK(self):
  39. text = self.entry.get().strip()
  40. if len(text) == 0:
  41. return
  42. _name = str("{}_{}").format(text, os.path.basename(self.jpg).split("_", 1)[-1])
  43. if self.OK:
  44. if not os.path.exists(os.path.join(os.path.dirname(os.path.abspath(self.jpg)), self.OK)):
  45. os.makedirs(os.path.join(os.path.dirname(os.path.abspath(self.jpg)), self.OK))
  46. okPath = os.path.join(os.path.dirname(os.path.abspath(self.jpg)), self.OK, _name)
  47. else:
  48. okPath = os.path.join(os.path.dirname(os.path.abspath(self.jpg)), _name)
  49. if os.path.exists(self.jpg):
  50. os.rename(self.jpg, okPath)
  51. self.tagNext()
  52. def tagNext(self):
  53. if self.index >= len(self.jpgs):
  54. return
  55. self.jpg = self.jpgs[self.index]
  56. _name = os.path.basename(self.jpg)
  57. self.tk.title(_name)
  58. preCode = _name.split("_", 1)[0]
  59. self.imgTk = ImageTk.PhotoImage(Image.open(self.jpg))
  60. self.image.config(image=self.imgTk)
  61. self.entry.delete(0, tkinter.END)
  62. self.entry.insert(0, preCode)
  63. self.index += 1
  64. if self.index >= len(self.jpgs):
  65. self.buttonNext.config(state="disabled")
  66. if __name__ == "__main__":
  67. tk = Tk()