立即学习:https://edu.csdn.net/course/play/19711/343111?utm_source=blogtoedu
1.place布局:
1)最灵活的布局方式,是根据坐标点来进行组件的位置布局的
2)确定坐标点后,组件从坐标点开始展开,即以指定坐标点为组件的左上定位点
3)组件.place(x=,y=)
2. place直接布局
image_label_1 = tkinter.Label(root,image = image)
image_label_2 = tkinter.Label(root,image = image)image_label_1.place(x = 50,y = 50)
image_label_2.place(x= 100,y = 100)
import tkinter#导入创建窗体的相关模块
import osimage_path = r'C:\Users\jinlin\Desktop\python_further_study\GUI编程\resources' + os.sep + 'linlianqin.gif'#因为每个平台的分隔符不一样,所以用os.sep可以自动切换到相应平台的分隔符class Mainwindow():#创建窗口类def __init__(self):root = tkinter.Tk()#创建主体窗口root.title('linlianqin')#定义窗体的名字root.geometry('500x500')#定义窗体的初始大小root.maxsize(1200,1200)#设置窗口可以显示的最大尺寸#----------------------对组件进行place布局-------------------------image = tkinter.PhotoImage(file = image_path)image_label_1 = tkinter.Label(root,image = image)image_label_2 = tkinter.Label(root,image = image)image_label_1.place(x = 50,y = 50)image_label_2.place(x= 100,y = 100)root.mainloop()#显示窗口,这个代码一定要放在所有窗口设置的后面if __name__ == '__main__':Mainwindow()#将窗体类实例化
3. place布局加组件拖拽事件,一般有拖拽事件的都是使用place布局的
self.image_label_1.place(x=0,y=0)self.image_label_2.place(x=50,y=50)self.image_label_1.bind("<B1-Motion>",self.label_move_1)self.image_label_2.bind("<B1-Motion>",self.label_move_2)self.root.mainloop() # 显示窗口,这个代码一定要放在所有窗口设置的后面#定义组件拖拽功能
def label_move_1(self,event):self.image_label_1.place(x=event.x,y = event.y)#event事件中含有下x,y坐标点的信息def label_move_2(self,event):self.image_label_2.place(x=event.x,y = event.y)
import tkinter#导入创建窗体的相关模块
import osimage_path = r'C:\Users\jinlin\Desktop\python_further_study\GUI编程\resources' + os.sep + 'linlianqin.gif'#因为每个平台的分隔符不一样,所以用os.sep可以自动切换到相应平台的分隔符class Mainwindow():#创建窗口类def __init__(self):self.root = tkinter.Tk()#创建主体窗口self.root.title('linlianqin')#定义窗体的名字self.root.geometry('500x500')#定义窗体的初始大小self.root.maxsize(1200,1200)#设置窗口可以显示的最大尺寸#----------------------对组件进行place布局-------------------------self.image = tkinter.PhotoImage(file = image_path)self.image_label_1 = tkinter.Label(self.root,image = self.image)self.image_label_2 = tkinter.Label(self.root,image = self.image)self.image_label_1.place(x=0,y=0)self.image_label_2.place(x=50,y=50)self.image_label_1.bind("<B1-Motion>",self.label_move_1)self.image_label_2.bind("<B1-Motion>",self.label_move_2)self.root.mainloop() # 显示窗口,这个代码一定要放在所有窗口设置的后面#定义组件拖拽功能def label_move_1(self,event):self.image_label_1.place(x=event.x,y = event.y)#event事件中含有下x,y坐标点的信息def label_move_2(self,event):self.image_label_2.place(x=event.x,y = event.y)if __name__ == '__main__':Mainwindow()#将窗体类实例化