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 窗口居中对齐:
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编程的更多相关文章
- Python中的并发编程
简介 我们将一个正在运行的程序称为进程.每个进程都有它自己的系统状态,包含内存状态.打开文件列表.追踪指令执行情况的程序指针以及一个保存局部变量的调用栈.通常情况下,一个进程依照一个单序列控制流顺序执 ...
- 可爱的 Python : Python中的函数式编程,第三部分
英文原文:Charming Python: Functional programming in Python, Part 3,翻译:开源中国 摘要: 作者David Mertz在其文章<可爱的 ...
- Python中的多线程编程,线程安全与锁(二)
在我的上篇博文Python中的多线程编程,线程安全与锁(一)中,我们熟悉了多线程编程与线程安全相关重要概念, Threading.Lock实现互斥锁的简单示例,两种死锁(迭代死锁和互相等待死锁)情况及 ...
- Python中的并行编程速度
这里主要想记录下今天碰到的一个小知识点:Python中的并行编程速率如何? 我想把AutoTool做一个并行化改造,主要目的当然是想提高多任务的执行速度.第一反应就是想到用多线程执行不同模块任务,但是 ...
- python中的面向对象编程
在python中几乎可以完成C++里所有面向对象编程的元素. 继承:python支持多继承: class Derived(base1, base2, base3): pass 多态:python中的所 ...
- python中的TCP编程学习
今天看了一下关于python的TCP编程. 发现思路和其他语言(比如java)思路基本上差点儿相同. 先看client.基本过程例如以下: 第一步:创建一个socket 第二步:建立连接 第三步:发送 ...
- python进阶---Python中的socket编程
初识socket编程 一.前言 socket基于C\S架构(客户端\服务端)的编程模型,在Python中是以socket模块存在的. Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是 ...
- Python中的多线程编程,线程安全与锁(一)
1. 多线程编程与线程安全相关重要概念 在我的上篇博文 聊聊Python中的GIL 中,我们熟悉了几个特别重要的概念:GIL,线程,进程, 线程安全,原子操作. 以下是简单回顾,详细介绍请直接看聊聊P ...
- Python 中的面向对象编程
面向对象编程(Object-oriented programming, OOP)是一种基于对象概念的编程范式,可包含属性(attribute)形式的数据以及方法(method)形式的代码.另一种对 O ...
随机推荐
- mongodb学习之路1
第一节 MongoDB介绍及下载与安装 引言 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似 json的b ...
- JS获取图片实际宽高及根据图片大小进行自适应
JS获取图片实际宽高,以及根据图片大小进行自适应 <img src="http://xxx.jpg" id="imgs" onload="ad ...
- gcc链接程序时出现undefined reference to""错误
如:: undefined reference to ‘mq_unlink',意思是指函数mq_unlink没有定义. 可以使用如下步骤找到该函数所在的库: 1).查找哪些库包含了或使用了该函数:gr ...
- JavaScript中使用console调试程序的坑
上DEMO a = {key1: [1, 2], 'key2': {'key4': '11'}, 'key3': [1, 2]} console.info(1,a) a.key2.key4 = '22 ...
- Java读取本地文件进行unicode解码
工具使用: package test.opservice; import eh.util.MapValueUtil; import java.io.BufferedReader; import jav ...
- Basic Operation about Linux
1. 永久开启/关闭防火墙 在linux中防火墙是一个名叫iptables的工具 开启: chkconfig iptables on 关闭: chkconfig iptables off 即时生效,重 ...
- Ubuntu下配置samba服务器实现文件共享
安装Samba 安装samba sudo apt-get install samba Kubuntu 安装系统设置的共享模块 sudo apt-get install kdenetwork-files ...
- Daject初探 - 一个开源关系型数据库对象关系映射(ORM)模型
Daject简介 Daject是用php写的一个关系型数据库抽象模型,通过该模型,可以在不写任何SQL或写很少的SQL就能执行大多数数据库查询操作.Daject具有面向对象,跨数据库的优点,通过数据库 ...
- UML 小结(3)- UML的结构及各个阶段的应用
UML的结构: 其中各个图的作用如下: 用例图:用来描述用户的需求,从用户的角度描述系统的功能,并指出各功能的执行者,强调谁在使用系统,系统为执行者完成哪些功能. 静态图包括类图跟对象图 类图 ...
- 日志文件切割服务logrotate配置及crontab定时任务的使用
1.下载logrotate 在Fedora和CentOS安装 yum install logrotate crontabs Debian和Ubuntu上 apt-get install logrota ...