Python 中的 TK编程

可爱的 Python:Python 中的 TK编程

http://www.ibm.com/developerworks/cn/linux/sdk/python/charm-12/

python checkbox 用法详解

http://www.android100.org/html/201407/13/39698.html

Tkinter GUI编程——pack

http://blog.sina.com.cn/s/blog_4b5039210100epkl.html


环境安装:

sudo apt-get install python-t

 python tkinter 窗口居中对齐:

 1     from Tkinter import *
 2     def center_window(w=300, h=200):
 3         # get screen width and height
 4         ws = root.winfo_screenwidth()
 5         hs = root.winfo_screenheight()
 6         # calculate position x, y
 7         x = (ws/2) - (w/2)   
 8         y = (hs/2) - (h/2)
 9         root.geometry('%dx%d+%d+%d' % (w, h, x, y))
10     root = Tk()
11     center_window(500, 300)
12     root.mainloop()

https://www.centos.bz/2013/01/python-tkinter-center-windows/
滚动条的使用:
 python入门 
http://blog.chinaunix.net/uid-13231588-id-2904121.html


http://tkinter.unpythonic.net/wiki/ScrolledFrame
A ScrolledFrame, with several bugs. 

python使用Tk时固定窗口大小:

1 from Tkinter import *
2 root=Tk()
3 root.minsize(50,50)
4 root.maxsize(150,150)
5 Label(root,text="I'm lly365").pack()
6 root.mainloop()

python使用Tkinter做Gui如何显示用forget隐藏的控件:

创建控件
bt=tkinter.Button(root,text='button')
bt.place(x=5,y=5)
bt.place_forget()  #隐藏控件

再次bt.place() 还有传入x=5,y=5 不然不会显示 

http://bbs.csdn.net/topics/320137780

  1 #!/usr/bin/env python
  2 # coding:   utf-8
  3 
  4 import os
  5 import sys
  6 import string
  7 import operator
  8 import re
  9 import threading
 10 import csv
 11 
 12 import Tkinter # import the Tkinter module
 13 
 14 from time import sleep,ctime
 15 from collections import defaultdict
 16 from collections import Counter
 17 from Tkinter import *
 18 
 19 from Tkinter import *
 20 
 21 COL_COUNT=8
 22 GM_KEYS = set(
 23         vars(Tkinter.Place).keys() +
 24         vars(Tkinter.Pack).keys() +
 25         vars(Tkinter.Grid).keys()
 26         )
 27 
 28 class ScrolledFrame(object):
 29     _managed = False
 30     # XXX These could be options
 31     x_incr = 5
 32     y_incr = 5
 33 
 34     def __init__(self, master=None, **kw):
 35         self.width = kw.pop('width', 200)
 36         self.height = kw.pop('height', 200)
 37 
 38         self._canvas = Tkinter.Canvas(master, **kw)
 39         self.master = self._canvas.master
 40         self._hsb = Tkinter.Scrollbar(orient='horizontal',
 41                 command=self._canvas.xview)
 42         self._vsb = Tkinter.Scrollbar(orient='vertical',
 43                 command=self._canvas.yview)
 44         self._canvas.configure(
 45                 xscrollcommand=self._hsb.set,
 46                 yscrollcommand=self._vsb.set)
 47 
 48         self._placeholder = Tkinter.Frame(self._canvas)
 49         self._canvas.create_window(0, 0, anchor='nw', window=self._placeholder)
 50 
 51         self._placeholder.bind('<Map>', self._prepare_scroll)
 52         for widget in (self._placeholder, self._canvas):
 53             widget.bind('<Button-4>', self.scroll_up)
 54             widget.bind('<Button-5>', self.scroll_down)
 55 
 56     def __getattr__(self, attr):
 57         if attr in GM_KEYS:
 58             if not self._managed:
 59                 # Position the scrollbars now.
 60                 self._managed = True
 61                 if attr == 'pack':
 62                     self._hsb.pack(side='bottom', fill='x')
 63                     self._vsb.pack(side='right', fill='y')
 64                 elif attr == 'grid':
 65                     self._hsb.grid(row=1, column=0, sticky='ew')
 66                     self._vsb.grid(row=0, column=1, sticky='ns')
 67             return getattr(self._canvas, attr)
 68 
 69         else:
 70             return getattr(self._placeholder, attr)
 71     def yscroll(self, *args):
 72         self._canvas.yview_scroll(*args)
 73     def scroll_up(self, event=None):
 74         self.yscroll(-self.y_incr, 'units')
 75     def scroll_down(self, event=None):
 76         self.yscroll(self.y_incr, 'units')
 77     def see(self, event):
 78         widget = event.widget
 79         w_height = widget.winfo_reqheight()
 80         c_height = self._canvas.winfo_height()
 81         y_pos = widget.winfo_rooty()
 82 
 83         if (y_pos - w_height) < 0:
 84             # Widget focused is above the current view
 85             while (y_pos - w_height) < self.y_incr:
 86                 self.scroll_up()
 87                 self._canvas.update_idletasks()
 88                 y_pos = widget.winfo_rooty()
 89         elif (y_pos - w_height) > c_height:
 90             # Widget focused is below the current view
 91             while (y_pos - w_height - self.y_incr) > c_height:
 92                 self.scroll_down()
 93                 self._canvas.update_idletasks()
 94                 y_pos = widget.winfo_rooty()
 95 
 96 
 97     def _prepare_scroll(self, event):
 98         frame = self._placeholder
 99         frame.unbind('<Map>')
100 
101         if not frame.children:
102             # Nothing to scroll.
103             return
104         for child in frame.children.itervalues():
105             child.bind('<FocusIn>', self.see)
106 
107         width, height = frame.winfo_reqwidth(), frame.winfo_reqheight()
108         self._canvas.configure(scrollregion=(0, 0, width, height),
109                 yscrollincrement=self.y_incr, xscrollincrement=self.x_incr)
110         self._canvas.configure(width=self.width, height=self.height)
111 
112 
113 def test_04():
114     root = Tkinter.Tk()
115     
116     center_window(root,850,580) 
117     root.minsize(850,580)
118     root.maxsize(850,580)
119     sf = ScrolledFrame()
120     sf.grid(row=0, column=0, sticky='nsew')
121     sf.master.grid_columnconfigure(0, weight=1)
122     sf.master.grid_rowconfigure(0, weight=1)
123     
124     for _ in range(10):
125         lbl = Tkinter.Label(sf, text="Hi")
126         lbl.pack()
127         btn = Tkinter.Button(sf, text="Buh")
128         btn.pack()
129         entry = Tkinter.Entry(sf)
130         entry.pack()
131     
132     root.mainloop()
133 
134 def test_05():
135     root = Tkinter.Tk() # create a root window
136     root.title('demux and protocol of the ffmpeg config')
137     states = []      
138     #root['width']=1000
139     #root['height']=500
140     center_window(root,850,580) 
141     root.minsize(850,580)
142     root.maxsize(850,580)
143     sf = ScrolledFrame()
144     sf.grid(row=0, column=0, sticky='nsew')
145     sf.master.grid_columnconfigure(0, weight=1)
146     sf.master.grid_rowconfigure(0, weight=1)
147     Label(sf,text = 'please select demux type:').place(x=5,y=10)
148     #frame = Frame(root, width=500, height=400, bd=1)
149     #frame.pack()
150     #iframe1 = Frame(frame, bd=2, relief=SUNKEN)
151     chk_demux_list=[]
152     for i in range(10):
153         var = IntVar()
154         chk = Checkbutton(sf, text=str(i), variable=var)
155         if i+1<=COL_COUNT:
156             chk.place(x=i*100+30,y=10+30*(i/COL_COUNT+1))
157         else:
158             chk.place(x=(i%COL_COUNT)*100+30,y=10+30*(i/COL_COUNT+1))
159         #chk.pack(side=LEFT)
160         states.append(var)
161         chk_demux_list.append(chk)
162     #Label(root,text = 'please select protocol type:').place(x=5,y=30+chk_demux_list[len(chk_demux_list)-1].winfo_y())
163     Label(sf,text = 'please select protocol type:').place(x=5,y=250)
164     root.mainloop() # create an event loop
165     #print states
166     #for var in states:
167     #    print var.get()
168     #print map((lambda var: var.get()), states) 
169 def center_window(root,w=300, h=200):
170     # get screen width and height
171     ws = root.winfo_screenwidth()
172     hs = root.winfo_screenheight()
173     # calculate position x, y
174     x = (ws/2) - (w/2)   
175     y = (hs/2) - (h/2)
176     #80x80代表了初始化时主窗口的大小,0,0代表了初始化时窗口所在的位置
177     root.geometry('%dx%d+%d+%d' % (w, h, x, y))
178 def test_02():
179     root = Tkinter.Tk() # create a root window
180     root.title('demux and protocol of the ffmpeg config')
181     states = []      
182     #root['width']=1000
183     #root['height']=500
184     Label(root,text = 'please select demux type:').place(x=5,y=10)
185     center_window(root,850,580) 
186     root.minsize(850,580)
187     root.maxsize(850,580)
188     #frame = Frame(root, width=500, height=400, bd=1)
189     #frame.pack()
190     #iframe1 = Frame(frame, bd=2, relief=SUNKEN)
191     chk_demux_list=[]
192     for i in range(100):
193         var = IntVar()
194         chk = Checkbutton(root, text=str(i), variable=var)
195         if i+1<=COL_COUNT:
196             chk.place(x=i*100+30,y=10+30*(i/COL_COUNT+1))
197         else:
198             chk.place(x=(i%COL_COUNT)*100+30,y=10+30*(i/COL_COUNT+1))
199         #chk.pack(side=LEFT)
200         states.append(var)
201         chk_demux_list.append(chk)
202     #Label(root,text = 'please select protocol type:').place(x=5,y=30+chk_demux_list[len(chk_demux_list)-1].winfo_y())
203     Label(root,text = 'please select protocol type:').place(x=5,y=250)
204     root.mainloop() # create an event loop
205     #print states
206     #for var in states:
207     #    print var.get()
208     #print map((lambda var: var.get()), states) 
209 
210 
211 
212 
213 def test_03():
214     root = Tk()
215     root.title("Note Taker")
216     def Button1():
217         listbox.insert(END, "button1 pressed")
218     def Button2():
219         listbox.insert(END, "button2 pressed")
220     def Button3():
221         text_contents = text.get()
222         listbox.insert(END, text_contents)
223         text.delete(0,END)
224     button1 = Button(root, text="button1", command = Button1)
225     button2 = Button(root, text="button2", command = Button2)
226     button3 = Button(root, text="button3", command = Button3)
227     text = Entry(root)
228     scrollbar = Scrollbar(root, orient=VERTICAL)
229     listbox = Listbox(root, yscrollcommand=scrollbar.set)
230     scrollbar.configure(command=listbox.yview)
231     text.pack()
232     button1.pack()
233     button2.pack()
234     button3.pack()
235     listbox.pack()
236     scrollbar.pack()
237     root.mainloop() 
238 
239 def test_01():
240     #content  ==>  ###pos=350143600,pts=2676718###
241     #filename="F:\yingc\work\goxceed-dvbs-hd\6605\solution\aa"
242     filename="./aa"
243     pos=-1
244     dts=-1
245     poslist=[]
246     dtslist=[]
247     
248     str1="###pos="
249     str2=",pts="
250     
251     f = open(filename)
252     for line in f:
253         aa=line[0:len(str1)]
254         if aa == str1:
255             pos=line[len(str1):line.index(str2)]
256             dts=line[line.index(str2)+len(str2):len(line)-3-1]
257             poslist.append(pos)
258             dtslist.append(dts)
259     f.close()
260     
261     #s=[11,22,11,44,22,33]
262     d = defaultdict(list)
263     for k,va in [(v,i) for i,v in enumerate(poslist)]:
264         d[k].append(va)
265     #print  d.items()
266     count=0
267     for value in d.items():
268         if len(value[1])>1:
269             print value
270             count=count+1
271     print "poslen:"+str(len(poslist))+",dtslen"+str(len(dtslist))
272     print str(len(d))+","+str(count)
273 
274     #d = defaultdict(list)
275     #for k,va in [(v,i) for i,v in enumerate(dtslist)]:
276     #    d[k].append(va)
277     ##print  d.items()
278     #for value in d.items():
279     #    if len(value[1])>4:
280     #        print value
281 
282     ##print Counter([11,22,11,44,22,33])
283 
284 
285 
286 
287 if __name__ == "__main__":
288     test_02()
289     print "finish"
290 
291     
292     
293     
294 
295     
296 
297 
298     
299     
300     
301 
302     
Python:tkinter-Parent获取弹出窗口的返回值
http://blog.sina.com.cn/s/blog_ac9fdc0b0101naol.html


Tkinter里没有messagebox,
在Python2.5里,要从 tkMessageBox导入
from tkMessageBox import * 然后直接用showinfo()来实现输出 showinfo(message=“hello”) 这个时候不需要使用任何窗口路径来调用它,直接调用它就可以了。






aa
原文地址:https://www.cnblogs.com/jingzhishen/p/3860788.html