可爱的 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 窗口居中对齐:

     from Tkinter import *
def center_window(w=300, h=200):
# get screen width and height
ws = root.winfo_screenwidth()
hs = root.winfo_screenheight()
# calculate position x, y
x = (ws/2) - (w/2)
y = (hs/2) - (h/2)
root.geometry('%dx%d+%d+%d' % (w, h, x, y))
root = Tk()
center_window(500, 300)
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时固定窗口大小:

 from Tkinter import *
root=Tk()
root.minsize(50,50)
root.maxsize(150,150)
Label(root,text="I'm lly365").pack()
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

 #!/usr/bin/env python
# coding: utf-8 import os
import sys
import string
import operator
import re
import threading
import csv import Tkinter # import the Tkinter module from time import sleep,ctime
from collections import defaultdict
from collections import Counter
from Tkinter import * from Tkinter import * COL_COUNT=8
GM_KEYS = set(
vars(Tkinter.Place).keys() +
vars(Tkinter.Pack).keys() +
vars(Tkinter.Grid).keys()
) class ScrolledFrame(object):
_managed = False
# XXX These could be options
x_incr = 5
y_incr = 5 def __init__(self, master=None, **kw):
self.width = kw.pop('width', 200)
self.height = kw.pop('height', 200) self._canvas = Tkinter.Canvas(master, **kw)
self.master = self._canvas.master
self._hsb = Tkinter.Scrollbar(orient='horizontal',
command=self._canvas.xview)
self._vsb = Tkinter.Scrollbar(orient='vertical',
command=self._canvas.yview)
self._canvas.configure(
xscrollcommand=self._hsb.set,
yscrollcommand=self._vsb.set) self._placeholder = Tkinter.Frame(self._canvas)
self._canvas.create_window(0, 0, anchor='nw', window=self._placeholder) self._placeholder.bind('<Map>', self._prepare_scroll)
for widget in (self._placeholder, self._canvas):
widget.bind('<Button-4>', self.scroll_up)
widget.bind('<Button-5>', self.scroll_down) def __getattr__(self, attr):
if attr in GM_KEYS:
if not self._managed:
# Position the scrollbars now.
self._managed = True
if attr == 'pack':
self._hsb.pack(side='bottom', fill='x')
self._vsb.pack(side='right', fill='y')
elif attr == 'grid':
self._hsb.grid(row=1, column=0, sticky='ew')
self._vsb.grid(row=0, column=1, sticky='ns')
return getattr(self._canvas, attr) else:
return getattr(self._placeholder, attr)
def yscroll(self, *args):
self._canvas.yview_scroll(*args)
def scroll_up(self, event=None):
self.yscroll(-self.y_incr, 'units')
def scroll_down(self, event=None):
self.yscroll(self.y_incr, 'units')
def see(self, event):
widget = event.widget
w_height = widget.winfo_reqheight()
c_height = self._canvas.winfo_height()
y_pos = widget.winfo_rooty() if (y_pos - w_height) < 0:
# Widget focused is above the current view
while (y_pos - w_height) < self.y_incr:
self.scroll_up()
self._canvas.update_idletasks()
y_pos = widget.winfo_rooty()
elif (y_pos - w_height) > c_height:
# Widget focused is below the current view
while (y_pos - w_height - self.y_incr) > c_height:
self.scroll_down()
self._canvas.update_idletasks()
y_pos = widget.winfo_rooty() def _prepare_scroll(self, event):
frame = self._placeholder
frame.unbind('<Map>') if not frame.children:
# Nothing to scroll.
return
for child in frame.children.itervalues():
child.bind('<FocusIn>', self.see) width, height = frame.winfo_reqwidth(), frame.winfo_reqheight()
self._canvas.configure(scrollregion=(0, 0, width, height),
yscrollincrement=self.y_incr, xscrollincrement=self.x_incr)
self._canvas.configure(width=self.width, height=self.height) def test_04():
root = Tkinter.Tk() center_window(root,850,580)
root.minsize(850,580)
root.maxsize(850,580)
sf = ScrolledFrame()
sf.grid(row=0, column=0, sticky='nsew')
sf.master.grid_columnconfigure(0, weight=1)
sf.master.grid_rowconfigure(0, weight=1) for _ in range(10):
lbl = Tkinter.Label(sf, text="Hi")
lbl.pack()
btn = Tkinter.Button(sf, text="Buh")
btn.pack()
entry = Tkinter.Entry(sf)
entry.pack() root.mainloop() def test_05():
root = Tkinter.Tk() # create a root window
root.title('demux and protocol of the ffmpeg config')
states = []
#root['width']=1000
#root['height']=500
center_window(root,850,580)
root.minsize(850,580)
root.maxsize(850,580)
sf = ScrolledFrame()
sf.grid(row=0, column=0, sticky='nsew')
sf.master.grid_columnconfigure(0, weight=1)
sf.master.grid_rowconfigure(0, weight=1)
Label(sf,text = 'please select demux type:').place(x=5,y=10)
#frame = Frame(root, width=500, height=400, bd=1)
#frame.pack()
#iframe1 = Frame(frame, bd=2, relief=SUNKEN)
chk_demux_list=[]
for i in range(10):
var = IntVar()
chk = Checkbutton(sf, text=str(i), variable=var)
if i+1<=COL_COUNT:
chk.place(x=i*100+30,y=10+30*(i/COL_COUNT+1))
else:
chk.place(x=(i%COL_COUNT)*100+30,y=10+30*(i/COL_COUNT+1))
#chk.pack(side=LEFT)
states.append(var)
chk_demux_list.append(chk)
#Label(root,text = 'please select protocol type:').place(x=5,y=30+chk_demux_list[len(chk_demux_list)-1].winfo_y())
Label(sf,text = 'please select protocol type:').place(x=5,y=250)
root.mainloop() # create an event loop
#print states
#for var in states:
# print var.get()
#print map((lambda var: var.get()), states)
def center_window(root,w=300, h=200):
# get screen width and height
ws = root.winfo_screenwidth()
hs = root.winfo_screenheight()
# calculate position x, y
x = (ws/2) - (w/2)
y = (hs/2) - (h/2)
#80x80代表了初始化时主窗口的大小,0,0代表了初始化时窗口所在的位置
root.geometry('%dx%d+%d+%d' % (w, h, x, y))
def test_02():
root = Tkinter.Tk() # create a root window
root.title('demux and protocol of the ffmpeg config')
states = []
#root['width']=1000
#root['height']=500
Label(root,text = 'please select demux type:').place(x=5,y=10)
center_window(root,850,580)
root.minsize(850,580)
root.maxsize(850,580)
#frame = Frame(root, width=500, height=400, bd=1)
#frame.pack()
#iframe1 = Frame(frame, bd=2, relief=SUNKEN)
chk_demux_list=[]
for i in range(100):
var = IntVar()
chk = Checkbutton(root, text=str(i), variable=var)
if i+1<=COL_COUNT:
chk.place(x=i*100+30,y=10+30*(i/COL_COUNT+1))
else:
chk.place(x=(i%COL_COUNT)*100+30,y=10+30*(i/COL_COUNT+1))
#chk.pack(side=LEFT)
states.append(var)
chk_demux_list.append(chk)
#Label(root,text = 'please select protocol type:').place(x=5,y=30+chk_demux_list[len(chk_demux_list)-1].winfo_y())
Label(root,text = 'please select protocol type:').place(x=5,y=250)
root.mainloop() # create an event loop
#print states
#for var in states:
# print var.get()
#print map((lambda var: var.get()), states) def test_03():
root = Tk()
root.title("Note Taker")
def Button1():
listbox.insert(END, "button1 pressed")
def Button2():
listbox.insert(END, "button2 pressed")
def Button3():
text_contents = text.get()
listbox.insert(END, text_contents)
text.delete(0,END)
button1 = Button(root, text="button1", command = Button1)
button2 = Button(root, text="button2", command = Button2)
button3 = Button(root, text="button3", command = Button3)
text = Entry(root)
scrollbar = Scrollbar(root, orient=VERTICAL)
listbox = Listbox(root, yscrollcommand=scrollbar.set)
scrollbar.configure(command=listbox.yview)
text.pack()
button1.pack()
button2.pack()
button3.pack()
listbox.pack()
scrollbar.pack()
root.mainloop() def test_01():
#content ==> ###pos=350143600,pts=2676718###
#filename="F:\\yingc\\work\\goxceed-dvbs-hd\\6605\\solution\\aa"
filename="./aa"
pos=-1
dts=-1
poslist=[]
dtslist=[] str1="###pos="
str2=",pts=" f = open(filename)
for line in f:
aa=line[0:len(str1)]
if aa == str1:
pos=line[len(str1):line.index(str2)]
dts=line[line.index(str2)+len(str2):len(line)-3-1]
poslist.append(pos)
dtslist.append(dts)
f.close() #s=[11,22,11,44,22,33]
d = defaultdict(list)
for k,va in [(v,i) for i,v in enumerate(poslist)]:
d[k].append(va)
#print d.items()
count=0
for value in d.items():
if len(value[1])>1:
print value
count=count+1
print "poslen:"+str(len(poslist))+",dtslen"+str(len(dtslist))
print str(len(d))+","+str(count) #d = defaultdict(list)
#for k,va in [(v,i) for i,v in enumerate(dtslist)]:
# d[k].append(va)
##print d.items()
#for value in d.items():
# if len(value[1])>4:
# print value ##print Counter([11,22,11,44,22,33]) if __name__ == "__main__":
test_02()
print "finish"
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

Python 中的 TK编程的更多相关文章

  1. Python中的并发编程

    简介 我们将一个正在运行的程序称为进程.每个进程都有它自己的系统状态,包含内存状态.打开文件列表.追踪指令执行情况的程序指针以及一个保存局部变量的调用栈.通常情况下,一个进程依照一个单序列控制流顺序执 ...

  2. 可爱的 Python : Python中的函数式编程,第三部分

    英文原文:Charming Python: Functional programming in Python, Part 3,翻译:开源中国 摘要:  作者David Mertz在其文章<可爱的 ...

  3. Python中的多线程编程,线程安全与锁(二)

    在我的上篇博文Python中的多线程编程,线程安全与锁(一)中,我们熟悉了多线程编程与线程安全相关重要概念, Threading.Lock实现互斥锁的简单示例,两种死锁(迭代死锁和互相等待死锁)情况及 ...

  4. Python中的并行编程速度

    这里主要想记录下今天碰到的一个小知识点:Python中的并行编程速率如何? 我想把AutoTool做一个并行化改造,主要目的当然是想提高多任务的执行速度.第一反应就是想到用多线程执行不同模块任务,但是 ...

  5. python中的面向对象编程

    在python中几乎可以完成C++里所有面向对象编程的元素. 继承:python支持多继承: class Derived(base1, base2, base3): pass 多态:python中的所 ...

  6. python中的TCP编程学习

    今天看了一下关于python的TCP编程. 发现思路和其他语言(比如java)思路基本上差点儿相同. 先看client.基本过程例如以下: 第一步:创建一个socket 第二步:建立连接 第三步:发送 ...

  7. python进阶---Python中的socket编程

    初识socket编程 一.前言 socket基于C\S架构(客户端\服务端)的编程模型,在Python中是以socket模块存在的. Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是 ...

  8. Python中的多线程编程,线程安全与锁(一)

    1. 多线程编程与线程安全相关重要概念 在我的上篇博文 聊聊Python中的GIL 中,我们熟悉了几个特别重要的概念:GIL,线程,进程, 线程安全,原子操作. 以下是简单回顾,详细介绍请直接看聊聊P ...

  9. Python 中的面向对象编程

    面向对象编程(Object-oriented programming, OOP)是一种基于对象概念的编程范式,可包含属性(attribute)形式的数据以及方法(method)形式的代码.另一种对 O ...

随机推荐

  1. 当年的笔记_apache配置虚拟主机

    下午需要,在网上找了一堆,没找到合适的,翻出来自己当年的笔记,还是自己记的容易理解. 解决方案1:通过端口来区分 1>添加一个虚拟主机1.在d盘下新建www目录,如:d:/www. 2.修改ht ...

  2. js 数组去重复键

    Array.prototype.deleteEle = function() { var newArr = this; for (var i = newArr.length - 1; i >= ...

  3. C# 顺序表操作

    虽然.NET已经是现实了Reverse(),但是学习算法有必要知道其是怎么实现的: private static void ReverseArray(int[] array) { int temp; ...

  4. [转]init.d解析

    本文为转载,放在这里以备忘. init.d指的是/etc/rc.d/init.d目录.本文包括3部分内容1. Linux的引导过程2. 运行级别3. /etc/rc.d/ 与/etc/rc.d/ini ...

  5. 用Redis bitmap统计活跃用户、留存

    Spool的开发者博客,描述了Spool利用Redis的bitmaps相关的操作,进行网站活跃用户统计工作. 原文:http://blog.getspool.com/2011/11/29/fast-e ...

  6. MySQL 通过mysql_config_editor更安全的登录数据库

    在5.6版本中,MySQL可以通过mysql_config_editor登录数据库,变得更加安全. [root@hank-yoon ~]# mysql_config_editor set --logi ...

  7. vim使用手册

    1. 关于Vim 1.1 Vim的几种模式 2. 启动Vim 3. 文档操作 4. 光标的移动 4.1 基本移动 4.2 翻屏 4.3 标记 5. 插入文本 5.1 基本插入 5.2 改写插入 6. ...

  8. static方法不能直接访问类内的非static变量和不能调用this,super语句分析

    大家都知道在static方法中,不能访问类内非static成员变量和方法.可是原因是什么呢? 这首先要从static方法的特性说起.static方法,即类的静态成员经常被称为"成员变量&qu ...

  9. C++中的struct和class的区别

    C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能.struct能包含成员函数吗? 能!struct能继承吗? 能!!stru ...

  10. java 常见异常(二)

    java.lang.ClassCastException: com.bjsxt.HomeWrok.oop.polymorphism.UP cannot be cast to com.bjsxt.Hom ...