立即學習: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()#將窗體類實例化
?