本文首发于个人博客https://kezunlin.me/post/d5c57f56/,欢迎阅读最新内容!

python tkinter tutorial

Guide

main ui

messagebox
- showinfo()
- showwarning()
- showerror()
- askquestion()
- askokcancel()
- askyesno()
- askretrycancel()
- askyesnocancel() filedialog
- asksaveasfilename()
- asksaveasfile()
- askopenfilename()
- askopenfile()
- askdirectory()
- askopenfilenames()
- askopenfiles()

demo


from numpy.random import seed, uniform
from numpy import uint8, uint16, load, save from cv2 import imread, imwrite
from os import listdir, makedirs
from os.path import exists, basename # for python 3
from tkinter import Tk, Frame, messagebox, filedialog, Button, Label, StringVar class MyGUI():
def __init__(self): self.root = Tk() sw = self.root.winfo_screenwidth()
sh = self.root.winfo_screenheight() ww = 700
wh = 200
x = (sw-ww) / 2
y = (sh-wh) / 2
self.root.title('Image Compress Tool')
# center
self.root.geometry("%dx%d+%d+%d" % (ww, wh, x, y)) # frame1
frame1 = Frame(self.root)
frame1.grid(row=0, column=0, sticky='w') self.input_btn = Button(frame1, text="Input Folder", width=10, height=3, command=self.set_input_folder)
self.input_btn.pack(side='left') self.input_label_text = StringVar()
self.input_label_text.set("Input Folder") self.input_label = Label(frame1, textvariable=self.input_label_text, width=70, height=3)
self.input_label.pack(side='left') # frame2
frame2 = Frame(self.root)
frame2.grid(row=1, column=0, sticky='w') self.output_btn = Button(frame2, text="Output Folder", width=10, height=3, command=self.set_output_folder)
self.output_btn.pack(side='left') self.output_label_text = StringVar()
self.output_label_text.set("Output Folder") self.output_label = Label(frame2, textvariable = self.output_label_text, width=70, height=3)
self.output_label.pack(side='left') # frame3
frame3 = Frame(self.root)
frame3.grid(row=2, column=0, sticky='nw') self.run_btn = Button(frame3, text="执行加密", width=10, height=3, command=self.run_task)
self.run_btn.pack(side='left') self.run_label_text = StringVar()
self.run_label_text.set("Ready") self.run_label = Label(frame3, textvariable = self.run_label_text, width=70, height=3)
self.run_label.pack(side='left') def mainloop(self):
self.root.mainloop() def set_input_folder(self):
result = filedialog.askdirectory()
self.input_label_text.set(result) def set_output_folder(self):
result = filedialog.askdirectory()
self.output_label_text.set(result) def run_task(self):
input_folder = self.input_label_text.get()
output_folder = self.output_label_text.get()
#print("input_folder: "+input_folder)
#print("output_folder: "+output_folder)
if exists(input_folder):
#batch_compress(input_folder, output_folder)
self.run_label_text.set("Compress OK.")
messagebox.showinfo("Info", "Compress OK.")
else:
messagebox.showwarning("Warn", "Please input folder") def gui():
app = MyGUI()
app.mainloop() def main():
gui() if __name__ =="__main__":
main()

snapshots

Reference

History

  • 20190411: created.

Copyright

最新文章

  1. 强制 history 不记住特定的命令
  2. PMP备考_第五章_项目范围管理_实践思考
  3. 有return的情况下try catch finally的执行顺序(转)
  4. Python-Day3知识点——深浅拷贝、函数基本定义、内置函数
  5. SQL语句删除重复数据
  6. spring 集成 log4j 配置
  7. Unity NGUI 2D场景添加按钮
  8. c++中级 STL基础学习(二)
  9. 直接修改托管堆栈中的type object pointer(类型对象指针)
  10. Android 5.0以上手机出现找不到so文件
  11. java进程
  12. 通过ssh秘钥的方式可以连接上CE68交换机
  13. windows7+python2.7+setuptools 、pip+Django+PIL 网页制作环境配置
  14. 设置Firefox自动清除缓存,无需手动清除
  15. Pandas之索引
  16. SpringMVC跨重定向请求传递数据
  17. Java Web工程搭建方法
  18. MySQL中datetime和timestamp的区别及使用
  19. windows 网络共享传送文件超慢
  20. ElasticSearch(七):ElasticSearch集群的搭建

热门文章

  1. fullpage.js的引入方法
  2. 微信小程序——获取openGid
  3. SQL挑战一 : 查找最晚入职员工的所有信息
  4. Spark执行流程(转)
  5. 仿写vue UI 组件总结 (自己练习,仿照现有的UI组件)
  6. Sublime Text 常用快捷键(Mac环境)
  7. day29作业
  8. 借助WindowBuilder插件轻松完成JAVA图形用户界面编辑
  9. python *args,**kwargs参数
  10. 四、docker 仓库(让我们的镜像有处可存)