美文网首页
GUI中place布局管理

GUI中place布局管理

作者: Chaweys | 来源:发表于2021-01-12 21:11 被阅读0次

#coding=utf-8
from tkinter import *

root=Tk()
root.title("place布局管理")
root.geometry("500x300")

'''
创建一个Frame,在root窗口中,宽200,高200
x=30,y=30,表示在root窗口中的(30,30)位置放置该Frame
'''
f1=Frame(root,width=200,height=200,bg="green")
f1.place(x=30,y=30)


'''
首先自身的宽和高:relwidth=0.2相对父组件root的宽为500*0.2,relheight=0.3相对父组件root的高为300*0.3
再看自身的位置:relx=0.2相对父组件root的x轴位置0.2(距离x轴原点20%的位置),x=100再在此基础上偏移100,y=20相对父组件20的纵轴位置
'''
Button(root,text="上学通").place(relx=0.2,x=100,y=20,relwidth=0.2,relheight=0.3)

'''
relx=0.6相对父组件root的x轴位置0.6(距离x轴原点60%的位置)
rely=0.7相对父组件root的y轴位置0.7(距离y轴原点70%的位置)
'''
Button(f1,text="哇哦").place(relx=0.6,rely=0.7)
Button(f1,text="欧耶").place(relx=0.2,rely=0.2)

root.mainloop()
place布局管理.png

#coding=utf-8
from tkinter import *

class Application(Frame):
    def __init__(self,master):
        Frame.__init__(self,master)
        self.pack()
        self.createWidget()

    def createWidget(self):
        '''
        注:当Label(self,image=self.photo)无法显示图片时,可改成:Label(self.master,image=self.photo)
        self.photo=PhotoImage(file='./imgs/puke/puke1.gif')
        self.label=Label(self.master,image=self.photo)
        self.label.place(x=10,y=20)
        '''
        #列表推导式生成图片对象列表
        self.photo=[PhotoImage(file="./imgs/puke/puke"+str(i+1)+".gif") for i in range(10)]
        #列表推导式生成插入图片的标签对象
        self.label=[Label(self.master,image=self.photo[i]) for i in range(10)]

        #循环为每个图片标签对象设置布局place()
        for i in range(10):
            self.label[i].place(x=10+40*i, y=50)

        #为所有的Label增加事件处理,"Label"为className
        self.label[0].bind_class("Label","<Button-1>",self.chupai)

    def chupai(self,event):
        print(event.widget.winfo_geometry())
        print(event.widget.winfo_y())
        '''
        137x189+90+50
        50
        '''

        if event.widget.winfo_y()==50:
            event.widget.place(y=30)
        else:
            event.widget.place(y=50)

if __name__=="__main__":
    root=Tk()
    root.title("扑克布局")
    root.geometry("600x270+300+200")
    app=Application(root)
    root.mainloop()
扑克布局界面1.png
扑克布局界面2.png

相关文章

网友评论

      本文标题:GUI中place布局管理

      本文链接:https://www.haomeiwen.com/subject/nwakaktx.html