码迷,mamicode.com
首页 > 编程语言 > 详细

python tkinter 入门使用

时间:2016-04-18 20:47:01      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:

因为做网络课设有用到,不会的时候用起来还是挺凌乱的,不过做完回头看tk还算是轻量且方便的一个东西了,首先贴一下我用到的代码

class Graph:
    def __init__(self, master):
            self.frame = Frame(master)

            self.label0 = Label(self.frame, text="Host").grid(row=0, column=0)
            self.hostport = StringVar()
            self.hostport.set("%d" %tokenring.port)
            self.label01 = Label(self.frame, textvariable=self.hostport).grid(row=0, column=1)


            self.label1 = Label(self.frame, text="Host number").grid(row=1, column=0)
            self.entry1 = Entry(self.frame,textvariable=self.hostport).grid(row=1, column=1)

            self.button2 = Button(self.frame, text="Restart", command=self.restart).grid(row=2, column=0)
            self.button21 = Button(self.frame, text="Change Flag", command=self.giveRing).grid(row=2, column=1)

            self.label3 = Label(self.frame, text=" ").grid(row=3, column=0)

            self.label4 = Label(self.frame, text="TokenRing Flag").grid(row=4, column=0)
            self.tokenringflag = StringVar()
            if tokenring.flag == 1:
                self.tokenringflag.set("Yes")
            else:
                self.tokenringflag.set("NO")
            self.label4 = Label(self.frame, textvariable=self.tokenringflag).grid(row=4, column=1)

            self.label5 = Label(self.frame, text=" ").grid(row=5, column=0)

            self.label6 = Label(self.frame, text="Terminal").grid(row=6, column=0)

            self.terminalist = Text(self.frame, width= 50, height= 300)
            self.terminalist.grid(row=7, column=0, columnspan=2)


            self.frame.grid(row=0, column=0)

定义时候用的名字比较奇葩,因为我觉得用数字标示位置比较方便我调试……不建议像我这样命名……

使用部分

if __name__ == __main__:
    time.sleep(1)
    root = Tk()
    root.title = Host
    root.geometry(tokenring.position) # set position
    graph = Graph(root)
    root.mainloop()

这个窗口主要用到的就是grid打包,比pack更好用一些

grid能为每个元素指定大概的位置,当然具体的位置并不能做到很精确,不过一般来说对入门级的使用来说也是足够的

首先定义,举个栗子

self.label0 = Label(self.frame, text="Host").grid(row=0, column=0)

定义了一个Label,然后为Label指定属性,第一个元素是本控件的父控件,在这里我用了一个大的frame,包含了我所有要使用控件,这样我如果后面要对整个窗口进行改变时会比较方便,如果想组合窗口直接用这个frame也可以(然而并没有用到

grid打包常用的属性就是row与column,指定行号列号控件的生成位置,grid会自动的为你指定尺寸并按照行列进行排列,如果某个行号未被使用,它就会被忽略,例如第一行放一个控件,第三行放一个控件,第二行不指定,实际生成的效果第二行将被忽略并跳过,第三行的控件会放在第二行的位置上,当然你也可以

self.terminalist = Text(self.frame, width= 50, height= 300)

来对尺寸进行自定义,并且使用

self.terminalist.grid(row=7, column=0, columnspan=2)

columnspan来让你的控件跨行,例如这个terminalist就会占用一行两列的空间

内容上,你可以使用

self.entry1 = Entry(self.frame,textvariable=self.hostport).grid(row=1, column=1)

 

来使控件的内容可变,当然textvariable需要你自己来定义,值得一提的是self.hostport = StringVar()定义的变量应该用get和set来设定或者取值

控件内容和变量是连接的,改变变量控件的内容会立即进行改变

这些应该就足够来初步体验一下tk并搞一个不错的窗口出来了,至于都有哪些控件可用和控件都有哪些属性,建议参考一下文档来进行使用,更权威一些。

 

哦对了,在显示窗口时,

root.geometry(tokenring.position)

 

窗口的属性由一个字符串来指定(好奇怪

position = 400x400+0+0 #tk window position

 

字符串为长x高+横向偏移量+纵向偏移量

x是字母x,并不是乘号

最后附上一个我的丑陋的窗口……

技术分享

python tkinter 入门使用

标签:

原文地址:http://www.cnblogs.com/kakinuma/p/5405706.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!