OSDN Git Service

first commit
[meshio/pymeshio.git] / examples / pymeshviewer.py
1 #!/usr/bin/env python\r
2 # coding: utf-8\r
3 \r
4 import sys\r
5 import tkinter\r
6 import tkinter.filedialog\r
7 import togl\r
8 import opengl\r
9 import opengl.rokuro\r
10 import triangle\r
11 \r
12 \r
13 class Frame(tkinter.Frame):\r
14     def __init__(self, width, height, master=None, **kw):\r
15         super(Frame, self).__init__(master, **kw)\r
16         self.master.title('pymeshio viewer')\r
17         self.current='.'\r
18         # setup menu\r
19         menu_bar = tkinter.Menu(self)\r
20         self.master.config(menu=menu_bar)\r
21 \r
22         menu_file = tkinter.Menu(menu_bar, tearoff=False)\r
23         menu_bar.add_cascade(label='FILE', menu=menu_file, underline=0)\r
24 \r
25         menu_file.add_command(label='Open', under=0, command=self.onOpen)\r
26 \r
27         # setup opengl widget\r
28         self.glworld=opengl.BaseController(opengl.rokuro.RokuroView(25), triangle.Triangle(5))\r
29         glwidget=togl.Widget(self, self.glworld, width=width, height=height)\r
30         glwidget.pack(fill=tkinter.BOTH, expand=True)\r
31 \r
32         # event binding\r
33         self.bind('<Key>', self.onKeyDown)\r
34         self.bind('<MouseWheel>', lambda e: self.glworld.onWheel(-e.delta) and glwidget.onDraw())\r
35 \r
36     def onOpen(self):\r
37         filename=tkinter.filedialog.askopenfilename(\r
38                 filetypes=[\r
39                     ('poloygon model files', '*.mqo;*.pmd'),\r
40                     ], \r
41                 initialdir=self.current)\r
42         print('open: %s' % filename)\r
43 \r
44     def onKeyDown(self, event):\r
45         key=event.keycode\r
46         if key==27:\r
47             # Escape\r
48             sys.exit()\r
49         if key==81:\r
50             # q\r
51             sys.exit()\r
52         else:\r
53             print("keycode: %d" % key)\r
54 \r
55 \r
56 if __name__ == '__main__':\r
57     f = Frame(width=600, height=600)\r
58     f.pack(fill=tkinter.BOTH, expand=True)\r
59     f.focus_set()\r
60     f.mainloop()\r
61 \r