Tcl/tk实例-工具栏和菜单-图片预览工具

news/2025/3/13 14:32:08/

可以打开并查看图片,点击工具栏上 Previous 和 Next 按钮来浏览 前/下 一张。仅仅是一个例子,其它按钮和菜单未添加命令。

package require Ttk
package require Img
package require base64
package require BWidget
package require Thread
package require Ttraceset icon(import) {iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAg1JREFUeNp8U0FME0EUfTM7s9AWkhKTpcSrePBkCB4gYAwHPXCQyEEkwQs3z57VaEKIiVdveCEpBGoLBBBOYLh4NASORNGDaThQFNva7u74Z3bbbrXwmt/+nZn/+v6ft0wpBY219fVT1/OSyvcRrGjojIEzBsbYyYOxMQcRmFr9peN9LqcuQz6fV5lsNv0vAW9iI3z5ekzxLYxjszafTsNxHAwNDDzK5HILURIeFashhICUQejcHKIWqq6L7lQKw4ODE9mVlUytTkT0hASW7tfkvvLN7/XeXiwtL9OzwtTkpFY7/j9BCIs3CCz6FIsl3OrvN1E/wyxcSMAtAV2viWxh0wGJatGv78s4R0J2XEwgBDcK2mUMs6uvsPl5g26S11vknCNmt2N05t4iPU60bIFTQZuUpnjm8RQqbgWe75EjGIQlEW8j8szaw9YElmVIAm0c5+UC7ve9aDrzYX8W4Xwb19gg4CYCMJyV8/W9ub0nmH6XxO/KKRAOuqGgtkDSdQtBOcN59Sww06enmB5+i2QihZ9/vpu9JgV6OMEMeI3LtOOyksn3f2xj4+ANxvueoeQVDH2TAnLbL3JYpzaLdl5cJGiQNpjw8Xr3Lpyuqzg82cbhzhaudPaQFwJiVnsH6OpuGu9EMPL89mLc7rgGxcJ/VMbynFK37H7cfLl1J0qAFrhBEUNrFKj26K8AAwCgT9EiWWDEHQAAAABJRU5ErkJggg==
}set icon(export) {iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAgVJREFUeNp8k0tPE1EUx//3MSMtEF1VPgC4MCxc4AJijdGoCzdEFmITMfET4M6diSbatWHtxqQ0trZIkJi4MOzcwRcgUhcmjQlteHQS5nE998xMmUrxPz1zH3PPb845cyqMMbBa39joBGF4yUQR4h0rOxOQQkAI8efh/HwBGbGvvVn71Gya/6ndbpt6o1H5FyAHaKSfey2yX4m1eO9DpYJCoYAbs7OP683mahYis8Faaa3hOLHZOR+iFPwgwOWJCRTn5hYba2v11E9n4kkAyubL88hEPF6ZmsLHWo3WBk9KJRvtwllAIiVPAYquXs/D9ZkZtv4ZoXAuQCoN629BrnbpgAO/F/WfO3mJUWfsfIDWkiMYcXIof36NzZ0vtJb8OeN6SIy4Lh68uV+l5eLQFOyhC47Dzm+XlhBQb1A3MMiYkAHl2vojC5BnAErF1aefoFx7J4e4N/0cvzu7eL+1jLvTyzjw9rmgw4uoJEURc6n/cHSyj+qPF3hafIcQcS26Xruf0ikgqbym0KVIADQeBwfY3vvGzs+KK7x/5HcYPgCQyVvTt6cF88IuVkqtgSh9HCeFzQKEOKQOG7e52c7L61G4FI1RPsrf7yAMA+pWw0Uez12kMY5ApP8B+nTXuHcyuv3yZjXvjk0aI9g5rYsk58DztzZffb2VBWCIrpLlMFxd8t39K8AAxyfX6zUxRPMAAAAASUVORK5CYII=
}set icon(open) {iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAaFJREFUeNqkU88vA0EU/mZ2WiElfobERfwBLiIhcfA/OLkicXSU4OJQcSc9ceQiEkcu4ibiUhWkxKb1o6qyqVLbre7OerMqWqlkpS/59n2T9743M2/2Mdd1UY+JkxVWM8AZBsiN1wjtSBex730FYYrQ9zuLkjA4JxdzhQKypolpvQOGYWL9NMQpPETYUHnsKIzw8OzuPBwHrivhyko4X17FypwxhujmzDJpF7wTOBKaEsuPYpVQVog9XvaaFoCnIQvQl6tF9c5/i79PojRB4fUJwqaFtG0Y8UMU354BVYw69AVJa/Lyh3PO1c6jpF2iQyQEFRVWLg2bknpGJnw9Xe/Y5PB7Ru++2J5fFTZdK288QGtqg5VJw89/wRjHc/z43rJxrgqIbEpHV/8gbGqkH9OCDUjfnKVNC5eiJCHyuVf0sIDvAk7Jeksl9SeN415Q/wJaYztsy6ROS18FjFT8MVfANVFXEGkJNXfSk3Bwjfu4P8OdfvVydovY2h49YzSB5OtW5OA/A6RncB3Zh060VU1SUJHyXPg1h2ARiqzecf4UYAAOUhKfHcZJBAAAAABJRU5ErkJggg==
}set icon(settings) {iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANkE3LLaAgAAAs1JREFUeJx9U11Ik2EYPTp1ueXU5dLpMvMnsEjnJq7yB5WyMEgIlTQVRU1YA/MiVpgEilPvugjUK2mKdhFNNiy0lQOxtilp7sJkKeq+YWvCN/Sz+bP2dpNh/p3L85xznsMDDwBAIpHkRkdHX8DRCKipqbmv1+vHNBrNRwDB/01LSko6JiYmfmVlZV05zN3Z2dlLCCEURf3OzMxU/KX9AZzY1bBbW1t14+PjVgC8vea0tLQcmqaJ2+0m1dXV7bt8V1fXy6Kiogd7tb6FhYUvVCrVWwABu2R+fn4lTdPE4XAQk8m0KJVKZUqlstnj8ZC8vLzaA3UrKip6GhsbNQBYABATEyObn58nNpuNrKysEIqitmmaJmaz2R0SEpLkuz9ArVbX0jRN6uvrewAENDQ0yLlcLgDA6/WCzWb72+12tLS0dLtcrhmfw44GwK+urq6/oKAgQya7LGTWXFCp2nTLFLUYFhYmNBqNI1arVQ1gy++IAHZKcgo3NjZOSK/+wLuxyYXuvj453G5qv5C1n+DxePzBwUHtpaSk69ubGzDZdvCZnRoqPHuO/31Mpz02QCDgRKjVAzpxcko6L+gkDIZR+6Nei3PdL5wfJ04Vh0dGnl4wDg8d2lkoFEaPDI9MLy0tE6fTSSwWy6ZIFHETQCInt8kmaZ4k5W9+kozapva9PhYAiESieK1W+z4+ISERIPB6vSgtLX04Ozs3AGB1x/bFvOYbcdsbKOAkXL2WEciGxz7zaQwAWDwej6/RaPT9/a+mGGZtXSwWn6mqquoYHR1t+7fGu23bsU9/XWOJChB4in0+PS/XZ8tFO+amTFAoFI83NjaIQqF4ZjAYvsnl8teHHRcAECi4w7313C1tNpPyQZok5BbfRVlZ2ROGYQjDMESpVA5h3y8cACeqIrhYTVKfflgPjbl4AwCCsrOz5RKJpBIA91jzLkLi77G4UTkA8AemGSncz8QQ2gAAAABJRU5ErkJggg==
}set icon(help) {iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAM2SURBVDiNbZNbbFRlFIW/8//nWlEawIZOofQ27YBOqVOCBU1TLkYt+qKihsSEmBgTKwZJTCdBjGmirRck8UENiRHS+OCDCaBHI4KO1aAFaRla24Jjp2KdoS1Qe5lpp3bO70NLA8Gd7JedvVfWXllLU0pxYxVvawkAzwB1QHB+3AVEgNa4G+67cV+7DlC8rUUAjYtyzFd3PrrOvifgE5Xl+QCcv5ik80LCO3Ts18xkeqYJeDvuhr0FgPnjtvuqikItLz3snIoOcKI9Rk//MABrSvJ4oMbPxrWrCL//9dRPnQMdQG3cDXv6PJPGTetKQ2/uesjZs/9Lro2l2fvcZir9+aSnZvihI06r28nxX2K8u+cR55UDbvWPHfFGoJmi+uZAcPt7qb+Hx9TT4U9VUX2zerHliMpmPdXTP6RGx9NKKaVOno6pmp0fqYa3vlCJkXEV3L4/XVTfHJC5/q0vv/Dkhk2j42nt0LGzABiGzmfHz3PYPUd79188vuVuVi7P5fPvexkZTVG6YgklK5bKU9E/JwRQV1Xh0060xwCwTJ1Ll8dIXk1hWwZVFT4Arv6TxjB0chyLzt+HCK0uEFKIOh0IBsuWE72YxDAkpmlgWQaWaRAKFLB7x0aUUhw82oFjWwihkbgyyeriPDylgtdFRAgNQ9cxjbm2TIO9z9Zi6pLDX0XpuzRKjmMihMCxTDQ0NEAAXV2xy4QCBRiGnGNh6Cy+3WYgOcaZ3gRt0UEc28SxLXIck/LCZcQGryGk6BJA5NyFhLdlfRm6LtF1iWHoaELwc/cgp3uTSCmxbWMBpNKfR/cfQ14260UE0PrxkTOZDWtXsf6ulehSoktB7iKH3U/dS8Nj1eQ4JpZlYtsma4rvpMyXy4HWSEYp1SribrhvIpVp2vfBN1OvP7+ZUMCHlAIptQW/G/O6BAqX8ERtKa99+O30RCrTFHfDfTdZeWuNv/qNhgftaGyYaGyYxJVJbHvu58rSZZTkL6bp4Mlpt63n7My/s7VxN+zdEqY7brP37dpxv11V4dPKC5eiaRrxxCi/9Y9473zyXWZ8crop63k3h+n/4iylqFNKBQGklF2zs9mIUuqWOP8HZvdMlKLbimEAAAAASUVORK5CYII=
}set icon(about) {iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADYUlEQVR4nGJkQALKAZOZGBgZLQV5OCKE+DmtebnYpP79+8/w8cvPZ+8//zj66duPFQz/GY/f3ZDzD6YHAAAA//9ihDFUAqeICvNx1qspCCdLCHJzMLMwMfz9+5/hz99/DH/+/mX49uMPw+v3X388fvlp7pdvvxpvr895zcDAwAAAAAD//wBBAL7/AQAAAAAfTpEXIBgQnDEnGEwJCAQA+vv+AC4eBgAsHwwAAAAAANDe8gDH2fQAAP8BAPX3+QDd5e+06/D3ZN+xbekAAAD//wBBAL7/AR1LkAMWEguPOS0cbQkGBAD5/P0A//8AAG9RJAAPDw8AAAAAAPHx8QCEpdUA/P3+AP//AAD4+PwA2uPtk/P1+nEAAAD//wTBuQ2AMBAEwD0fEBBtQERGF67I/SI5R/QASKB7mCnTqHVb2VQF92swT3gE+vmAJEhiPy54JNwTnzmKChbObVCpPwAAAP//RNDRCYAgFIbRT0iuldF47hmuEDSGW0Sg9/exM8JZjs3Kmc3er/+bgvo0rrvhApeQBAGCoA9nX6OlFMsEAAD//zzQUQ2AUAhA0esmfshMYJUXwSZWsIyhzMIYAv55Ipx5W5cBExH1r57HjqoiIgCYGdf94J54JPEmWUV3jw8AAP//YuFgZ5X6/fcvw/9/DAxMTJBI6V3/iGFivg0DCwsLAwMDA8OXL18Ybtx/C9XEAHENAwMDIyOjFAAAAP//Yvn77x/Dv38MDL///GP49u0nw7vPPxg+fPnJwMHBwcDDwwP31e8/f5FinpGBEZoAAAAAAP//Yvn67deztx++ib9895Xh05efDH/+/WNgYmRk+PMHKUwgtjFgAc8AAAAA//9i+fDlx5F3n38Y/v7zl4GZiYmBhZkJm0Jc4AgAAAD//2L68/f/yr///v1kYWZiwG4JTvCTgYFhJQAAAP//YmJkZDjBxMg4C1lmc5szPAAZGBgYWFhYGDa3OaMbMIuBgeEEAAAA//9iZGBgYFAJnCLOwMAwh4GBwYdI27cwMDCk3Fmf8xIAAAD//2JiYGBguLM+5yUDA0MSAwPDVAYGhh94NP6AqkmC6mEAAAAA//9C8bVK4BQmBgYGSwYGhggGBgZrBgYGKajUMwYGhqMMDAwrGBgYjt9Zj8jOAAAAAP//AwBqPBucJP8EOQAAAABJRU5ErkJggg==
}set icon(detail) {iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHSSURBVDjLpZPbSxtREMbzL4pSpYj1VilUmmpQSCKCSLAgihFTo9Eg0TRZY5LdxJgbKYo+2AstLRbU1nfxrlmTdLPJ55nZ+OCjyYGPYQ8zv/PN7DkmAKZGZGoakN5OKSeqPfAPtk9Ca8ew+g4xvPIHQ94DWJZ/Y3DxJ94v/ID54zf0z32BbXFPpToGODZOKrPpUzxX5pmdCgPo5HrUN7kNBtjW/qKe1TORMwDW1SPeeJ0ucMzlcshms0gmkyhqVSQSCVzmdSiKAlmWEQ6HOa/TkakBxMBolUQyFRRIpQruijp/3xR0XN/ruMiXcXar4fRG4/yOsaQBoGmzpa08x0wmg1QqhVgsxoBoNMoQSZIQCATg9/s5r300YQDoV9HS9Cr+l6vspFRzQgBVOCE3j06uVJ3zX47EDIBl6RdvdG9ec6Se4/E4QqEQA4LBIO5FSz6fD16vFx6Ph/PabLIBMM9/541ypYpyzQWpqD2VKiB54YJEq2VowwC8m/tqTFU+50i9RyIR7pUK6WSKbrcbLpcLTqeT85ot6wagf3a/rnvQNCjh8S1Ib6Z3+Wb1fviMLkcWr8bTYsqbPKg2u4JWawQvhsPCdkicLEHUkCQGNPwaGwU8AG9RQVkc+5PeAAAAAElFTkSuQmCC
}set icon(clear) {iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKXSURBVDiNlZJLaJRnFIaf75uZ6EwSm9tIQpNIvNWoFCsmiwrSgotKS3aCl4WL0Y2CIvwLBV0YFwYckFIQhI7GhWBLdaEL6Y0WMS20aTQxijGNmnFGSZPJZcw/80/+//uOK0VjIfisz/twzstRR75gczjEBRGixrL31A35kfdAhzTfr22OrdqworwxpLl6dJva+l4CYHFFVLO0KsLHLbFYSHP29H6lU0nVmUqq2gUFVugcfFJ0fSPU15QRXazqqxrpBY4DSxcUiPCN65mLtwbz7kzJp6mdypWtGzfE400vgLqFBEpEAOjap07EV3L8k7bPVXNLOz2nu73pf8Zy7FSTxsglEc4nHBn/X0EqqXZprb79dHNHtK6ugX+//punVx+y/ux2atdVkR7t9+7f/UOM9b4zRo4lHMnOF+zRmmRTfWs5lyRqJl22dG9lUY0GFYVQNX5Qzr3BX/2B/t8N4v9gDCng5usTUkm1KHKOOxXNtas6Lh8Oaf0cQg1gxsBksUEez7bgzdWQyQzI45EBd2oyW9SvVkk4UvJ301V7sLGkI2VgZyEYAZMF8x9e4RmzuevMjJ0jXo3a1P5VhVZKwm81UsHP2UxaW6tQ/ggiPv6ch1eapViYoVCYRkTQ4UrST3oDlPym38wnHHnmz02PpNN3mXFjTEyMksulmcxlcN0pRIRY9TYKRc3Qg/6SMThvCQACI4f6en8p+qzGdT2KxTzWBuhwDZXxHeTdmNy6eSVvTPBlwpHM6xLfpPuM6ln9UXvb8hWtES//J2WxNejIMh4N9wRDQ33j1vJZwpGHAOF30oAxdAw9+Ot25ZKGDz+oatOjo/f84eGfAmu869ZyIOHIxDufOJ9UUi1Tij6lEOCatZxMOPJ4/txLfgdDCCiEEtoAAAAASUVORK5CYII=
}set icon(exportLog) {iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAhZJREFUeNqMU81LG1EQn/e12QUJNQfpCj0EhB6CrSI9JNeK5BAN4kHEe/8FwRZ6KFgoUnpoQRCEgl5KL4IHUTwUqof2ViiFkoo5KGvIVk2z2Ww+djsT4roVTB0YmHnvzW9m3m+G5RYWgIRzDppSaTSH4ZYSBMGWjDjpJ5OTi4/HxnJo9wyseZ79bHX19ZFlKdlsNC7Ph9Ojo7nfjtMzWIvF4P329tbPYvGDVKoo3Xo9vKygXf0PQB9j8HF390AIUWi12yBrtVp42fJ9aOJhL6E30Zh/ADiik94kvw4PwcEKsW3B0W9g+5wALpURALJxk5bLZZidmACNsT4B8ChoNrEC1w0zCASQnIc+/U+lUoGybcPZ+TnU0T8pleDLxsarVD6/iGxx6UYAJAIoIULfiMfB7O+Hh0NDoCsFIgL+fXNzKTk+/lx6nndVAT6IAhAjR5j9xLLgFDP/qVZhfmoK7pkm3M1kXmDLe9E5YFS+FgFIYAWk95PJjv92ba0TfGdk5CUG78QMY18GVwBSXGvhupgDA/B0eRmqrmsrKT+3cGIl0ODoemfIHGTCR56JypCRLrUM7fnpaZBSwtLKit+mebm4QAD6RF1P5bPZzLdCoVMBLhXESDUN9K6ST+fdKdGBJvj4GBtPJFKpbPZNybbPMHvQU5G3d+vrn5hpziBInIAYM4wHfHBw7tYr7Dg/fMv6SqtDRP0VYADYyf2IZe0cagAAAABJRU5ErkJggg==
}set icon(exit) {iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAp5JREFUeNp0U1tIFFEY/mbWMkRBd3UXQxNzFSlWlMWE0i3LLKKEfMygl6CMHTYfEguMqNCwh7Zm0oQgeughAkOMKLObZkFQVIRFdnETzJx1V3G3XWfn0jmDszhhh/nmv3z/95/hP3OY2NANLF/DTZzTc4v/ihXWShxrOM+aOAuBP9WRM07tv+L/caymaqAgD7+2zuNzn/bCVlnue3KA8xsc8Xl7TZXOUUviboNL0RQVjw+18Hnbq5sLPKWIjfahZL+HNvQNHfTRTSy5NVXeonq3zjl3V1OumXDKjpuXOOauPcOZZs8edx9tgDT2cum7WKS6tuJz/ygsq1eheJcbix9fgGyp06kuD15fuYP4bLiAme+/hkeHT/C2vAzv+goHGAbJJmvKawFVQfz9cFKsacC3N78RmloQdl6/yDGhvm6dGDzSxtty072FLpupCTSYxR+CCE9HhfreC5xeosoqKOqudnAzUxFh/J2IREyGHCf4I0GOSbpPc1/eigj+igq01tCl0JexZDBgbblISFHiqaZj1EiGsdohiwFluYZVSEBxj2vnHRVlXmdtJeRFsmPcDEVSUVK/BTllG3yk1m/oWJUc40DLGb+9wuUtqipF6PkD8smSqYnuxxYRfnofxZvLSJONPqLhqZbpsWYWplkzv29qrMXcyEMy9aWBEQSmE2DJRPMdKTDmyrAWZG3bg1e3BxGbmy9gAr1dGDjZ4bemW3x52YxeSMWTQRXhiCpQUVY6683PZpNNJmdVhBZUYV/nKY6lf+Le823HRVI8MaNClhRQG4xoAslzFNSfEAmXUBAQFYgLWg/NU23yLjScbeVmo9rlsWmAWhqbONLkE+HECAQSHzM45ofQaTquvvaudY3nWn+udJ0J5ySc6Tr/FWAAWrOVmqP8y7MAAAAASUVORK5CYII=
}set icon(save) {iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAH+SURBVBgZBcE9i11VGAbQtc/sO0OCkqhghEREAwpWAWUg8aMVf4KFaJEqQtAipTZWViKiCGOh2Ap2gmJhlSIWFsFOxUK0EsUM3pl79n4f12qHb3z3Fh7D83gC95GOJsDe0ixLk5Qq/+xv/Lw9Xd+78/HLX3Y8fXTr2nWapy4eCFKxG7Fby97SnDlYtMbxthyfzHO//nl85fNvfvnk8MbX5xa8IHx1518Vkrj54Q+qQms2vVmWZjdiu5ZR2rT01166/NCZg/2PFjwSVMU6yjoC1oq+x6Y3VbHdlXWExPd379nf7Nmejv2Os6OC2O4KLK0RNn3RNCdr2Z5GJSpU4o+/TkhaJ30mEk5HwNuvX7Hpi76wzvjvtIwqVUSkyjqmpHS0mki8+9mPWmuWxqYvGkbFGCUAOH/+QevYI9GFSqmaHr5wkUYTAlGhqiRRiaqiNes6SOkwJwnQEqBRRRJEgkRLJGVdm6R0GLMQENE0EkmkSkQSVVMqopyuIaUTs0J455VLAAAAAODW0U/GiKT0pTWziEj44PZ1AAAAcPPqkTmH3QiJrlEVDXDt0qsAAAAAapa5BqUnyaw0Am7//gUAAAB49tEXzTmtM5KkV/y2G/X4M5fPao03n/sUAAAAwIX7y5yBv9vhjW/fT/IkuSp5gJKElKRISYoUiSRIyD1tufs/IXxui20QsKIAAAAASUVORK5CYII=
}set icon(next) {iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAABuwAAAbsBOuzj4gAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHUSURBVDiNpZKxixpREMa/dVeMq62lYBNio0fAyspGUWzEJaAhXboUKVOmzV+QLlyKkDpglUJXLUISELGSq2xSHLgE5T13WZ87b9LEJQl7B5IPHjMM3/wY5o3BzPgfWUlFx3G+a62/EdGr0Wh0vA+QSioy81W1Wn0J4Gu32314MUBrjXq9jl6v9ziXyy07nc7TSydAEAQoFApwHCdfLBY/tlqtd81mM/uv1xgOhzda60dEBK01zrHf78M0zRi4Xq+xXC7XRPRkMpmsY8BgMAhrtVomnU7DMIy/3vmHmBnMjN1uh8ViEUopX0yn0/cAkGJmCCEghMDhcIDv+/B9P86llJBSQggBwzBQqVQe5PP560ajcQ0AltYaq9UKtm0jm80ik8kglUrFyyQiKKUQBAF830cYhiAiZuZbALCYGWEYwjRNmKYJZo4jEeF0OkEphePxiCiKwMw/mfnZfD7/fJ7gxrbtqyiKsN/vwczQWqNUKoGIwMyIoghKKSil3N/Nt/ESk0653W6H5XI5o5SClBKe52ml1Gut9ZvZbKb/9CaeMjPDsix4noftdvuDiIau635J8t4J2Gw2EEJ8Yubnruvuknz3AVZCiA/j8fjtXY1nJe7gEv0Cn0ExX3uDYC0AAAAASUVORK5CYII=
}set icon(previous) {iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAABuwAAAbsBOuzj4gAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHTSURBVDiNpVO/q9pgFD33fpEQQnBwlnbppEOKU6mgkgiCKHTt3qHQsUPnFrq0c4f+AQpP3O3QYLooHR5du0iLoMUOBhNinvnxdXhon6Au74M7nXvPd++555KUEvd5yiWw2+0qzPxOCNEaDoePT+XwueJ2u/0AwDfTNN9IKc1zeScJWq3WM03TfnQ6nSfVahVZlp3t8miEZrOpEtHHYrH4yrZt6LqOMAxxSSfag5ZlPWLmK9M0zXK5DCICEQEABoMBmBnMDCEEhBBg5t+9Xu8hSSnRaDSe67r+uVKp6IVC4XY2vp3uLpGUElJKZFmGyWSCfr9PSq1W+2QYxstSqQQiwnq9Pvy2j7sEaZoiy7KDLgqAP0EQyOl0SqqqQtd1aJoGVVWhKMqh5X3xzc0NttvtQRd2XfetlLJJRH+TJEEYhvB9H0EQIAxDRFGEKIqw2+0QxzGSJEEcx/8JAMB13a8AygC+pGkKIgIzQ1EU5HI5LBYLLJdLrFYrbDabvQ4/j7YAAPV6nZj5tRDifT6fVwzDgKZpmM1mGI1GdGqNR0Yaj8fScZwPaZo+9Tzvl+/7IKKLPjjpRMdxvkspTc/zrubz+UWCw27PhWVZL2zbvj6H033P+R+JCADzIQVFMAAAAABJRU5ErkJggg==	
}proc main { } {global lab iconset w .wm title $w "Example - Toolbar,Menu"set f [ frame $w.toolbar -relief ridge -borderwidth 1 ]pack $f -side top -anchor nw -fill x set sw [ ScrolledWindow .sw  ]pack $sw -side top -anchor nw -fill both -expand 1set sf [ ScrollableFrame .sf -bg black ]$sw setwidget $sfset f2 [ $sf getframe ]foreach val [ array names icon ] {set $val [ image create photo -data $icon($val) ]ttk::button $f.$val -image [ subst $$val ] -compound center -style Toolbutton}foreach separator { sp1 sp2 sp3 sp4 } {ttk::separator $f.$separator -orient vertical}$f.open config -command "openFile"$f.previous config -command "previous"$f.next config -command "next"$f.about config -command "About"pack $f.open -side left -padx 2 pack $f.save -side left -padx 2pack $f.sp1 -side left -ipady 7 -padx 2pack $f.import -side left -padx 2pack $f.export -side left -padx 2pack $f.sp2 -side left -ipady 7 -padx 2pack $f.settings -side left -padx 2pack $f.sp3 -side left -ipady 7 -padx 2ttk::checkbutton $f.b5 -image $detail -compound center -style Toolbuttonpack $f.b5 -side left -padx 2pack $f.exportLog -side left -padx 2pack $f.clear -side left -padx 2pack $f.sp4 -side left -ipady 7 -padx 2pack $f.help -side left -padx 2pack $f.about -side left -padx 2pack $f.previous -side left -padx 2pack $f.next -side left -padx 2set lab [ label $f2.lab1 -bd 0 -justify center -bg black ]pack $f2.lab1 -padx 2 -anchor nwmenu .menubar -tearoff 0  . config -menu .menubar foreach val { File View Settings About } {	set menu($val) [ menu .menubar.m$val -tearoff 0 ].menubar add cascade -label $val -menu $menu($val) -underline 0 }$menu(File) add command -label "Open..." -command "openFile" -underline 0 -image $open -compound left -accelerator "Ctrl+O"$menu(File) add command -label "Save..."  -underline 0 -image $save -compound left -accelerator "Ctrl+S"$menu(File) add command -label "Import..."  -underline 0 -image $import -compound left -accelerator "Ctrl+I"$menu(File) add command -label "Export..."  -underline 0 -image $export -compound left -accelerator "Ctrl+E"$menu(File) add separator$menu(File) add command -label Exit -command exit -underline 1 -image $exit -compound left$menu(View) add check -label "Aways on Top"$menu(View) add cascade -label "Zoom" -menu $menu(View).zoom$menu(View) add command -label "Workwrap"$menu(View) add command -label "Back" -command "previous" -image $previous -compound leftmenu $menu(View).zoom -tearoff 0$menu(View).zoom add radio -label "Zoom Out" -underline 0$menu(View).zoom add radio -label "Zoom In" -underline 0$menu(Settings) add command -label "Preferences..." -underline 0 -image $settings -compound left -accelerator "Ctrl+P"$menu(About) add command -label Help -underline 0 -image $help -compound left$menu(About) add separator$menu(About) add command -label About -command "About" -underline 0 -image $about -compound leftbind . <Control-o> "openFile"bind . <Key-Right> "next"bind . <Key-Left> "previous"	bind . <MouseWheel> {if { %D >= 0 } {previous} else {next}}focus -force $w
}proc SelectNextImageFrame {w interval} {global animationCallbackscatch { set animationCallbacks [ after $interval SelectNextImageFrame $w $interval ]set image [ $w cget -image ]set idx -1scan [ $image cget -format ] "GIF -index %d" idxif {[catch {$image config -format "GIF -index [ incr idx ]"}]} then {$image config -format "GIF -index 0"}} result
}proc animateLabelImage {w interval} {global animationCallbacks pathcatch { set animationCallbacks [ after $interval SelectNextImageFrame $w $interval ]} resulttrace variable path w ReadOnlyTrace
}proc ReadOnlyTrace { varName index op } {global animationCallbackscatch {after cancel $animationCallbacksunset animationCallbacks} result
}proc openFile {{file ""}} {global lab pathif { $file == "" } {set types {{{Image Files}       {*.jpg;*.gif;*.bmp;*.png;*.pcx;*.ico;*.tiff;*.raw;*.ppm}   }}set file [ tk_getOpenFile -parent . -title "Open image file" -filetypes $types ]}set path $fileset err [ catch { set bd [ open $file { RDWR BINARY } ]} result ]if { $err != 0 } {return}set data [ read $bd nonewline ]close $bdset imageData [ base64::encode $data ]set image [ image create photo -data $imageData ]$lab config -image $imageif {[ string tolower [ file extension $file ]] == ".gif" } {animateLabelImage $lab 100}
}proc previous { } {global pathif {![ info exists path ] || $path == "" } {return}set list [ glob [ file dir $path ]/{*.jpg,*.gif,*.bmp,*.png,*.pcx,*.ico,*.tiff,*.raw,*.ppm}]set pos [ lsearch $list $path ]if { $pos != 0 } {incr pos -1} else {set pos end}set path [ lindex $list $pos ]openFile $path
}proc next { } {global pathif {![ info exists path ] || $path == "" } {return}set list [ glob [ file dir $path ]/{*.jpg,*.gif,*.bmp,*.png,*.pcx,*.ico,*.tiff,*.raw,*.ppm}]set pos [ lsearch $list $path ]if { $pos != [ expr {[llength $list ] - 1}] } {incr pos 1} else {set pos 0}set path [ lindex $list $pos ]openFile $path
}proc About { } {set msg " \n This is an example for toolbar and menu.\n\It also can preview image!\n\n\Tcl/tk application.\n\Author\t: Andy_Wen\n\Email\t: wn0112@gmail.com"tk_messageBox -type ok -title "About" -icon info -message $msg}proc popErr { str } {tk_messageBox -type ok -title "Error" -icon error -message "$str"
}mainif { [ lindex $argv 0 ] != "" } {openFile [ lindex $argv 0 ]
}


 




http://www.ppmy.cn/news/854009.html

相关文章

TCL电子发布2018年中期业绩 母公司拥有者应占溢利同比大增278.6%

-销售规模突破千万 创上半年历史新高 -中国市场稳定增长 海外市场持续领先 互联网业务收入同比上升318.2% 香港2018年8月24日电 /美通社/ -- 截至2018年6月30日止六个月及三个月财务摘要 &#xff08;港币百万元&#xff09; 2018年 6月30日止 2017年 6月30日止 变动 2018…

TCL:在Quartus中使用tcl脚本语言进行管脚约束

前言 使用Quartus进行管脚约束时&#xff0c;管脚很多时&#xff0c;使用图像化界面去配置就会很麻烦 &#xff0c;这种情况下可以采用tcl脚本语言进行管脚约束 正文 注意&#xff1a;导出文件之前&#xff0c;可以自己手动将管脚的Location全选&#xff0c;然后随便设置上管…

算法刷题Day 34 K次取反后最大化的数组和+加油站+分发糖果

Day 34 贪心算法 1005. K次取反后最大化的数组和 class Solution { public:int largestSumAfterKNegations(vector<int>& nums, int k) {sort(nums.begin(), nums.end());int idx 0;for (; idx < nums.size(); idx){if (nums[idx] < 0 && k > 0)…

无法打开msi的问题

主要有两个原因 1.windows installer 没有打开&#xff0c;可以在控制面板的服务管理中打开 2.被杀毒软件屏蔽&#xff0c;可暂时暂停杀毒软件服务

msi制作

我们经常可以看到许多软件只有一个扩展名为MSI的文件&#xff0c;双击这个文件运行&#xff0c;就会出现和Windows应用软件安装非常相似的安装过程&#xff0c;MSI文件到底是什么&#xff1f;为什么许多软件开始用MSI格式来发行呢&#xff1f;请听我慢慢说来。 1.历史 说到MSI…

MSI-X总结

PCIe有三种中断,分别为INTx中断&#xff0c;MSI中断&#xff0c;MSI-X中断&#xff0c;其中INTx是可选的&#xff0c;MSI/MSI-X是必须实现的。 MSI&#xff0c; message signal interrupt, 是PCI设备通过写一个特定消息到特定地址&#xff0c;从而触发一个CPU中断。特定消息指的…

关于MSI

一、初识Windows功能增强“插件”MSI 我们经常可以看到许多软件只有一个扩展名为MSI的文件&#xff0c;双击这个文件运行&#xff0c;就会出现和Windows应用软件安装非常相似的安装过程&#xff0c;MSI文件到底是什么&#xff1f;为什么许多软件开始用MSI格式来发行呢&#xff…

提高视觉检测系统稳定性的隐藏办法——10G高速图像采集卡

提高视觉检测系统稳定性的隐藏办法——10G高速图像采集卡 目前&#xff0c;随着我国各方面配套基础设施建设的完善&#xff0c;企业技术、资金的积累&#xff0c;各行各业积极探索和大胆的尝试机器视觉技术&#xff0c;实现工业自动化、智能化。在机器视觉系统的使用过程中&am…