python的tkinter窗口位置\坐标\大小等知识(自用笔记)
大家都知道tkinter庫中有很多控件和主窗口,因此這些控件和主窗口都有對應的屏幕坐標的信息。因此我們可以分別進行介紹。
他是以電腦屏幕的左上角為原點,向右是x,向下是y的這樣的一個坐標系
一、關于主窗口的介紹:
我們見的比較多的命令如下:
window.geometry("300x200+100+50")這是什么意思呢?
其實:第一個(300)是指窗口的寬度 x 第二個窗口(200)的高度 + 第三個窗口(100)左上點離左屏幕邊界距離 + 第四個窗口(50)左上點離上面屏幕邊界距離。
(1)窗口屬性設置
在上面程序的基礎上,在root = Tk()和root.mainloop()之間添加下面的代碼以在窗口中添加元素
窗口標題: window.title("title_a")
添加窗口圖標:window.iconbitmap(icon_file) #icon_file就是一個.ico的圖標文件,使用絕對或相對路徑
設置窗口大小:
window.geometry("x_WIDTH x x_HEIGHT") #其中將_WIDTH替換為窗口寬度,將_HEIGHT替換為窗口高度 設置窗口在屏幕上的位置: window.geometry("+X+Y") #X/Y表示以屏幕左上角為頂點的窗口的坐標 #或者是 window.geometry("x_WIDTH x x_HEIGHT+X+Y")(2)常用的事件處理函數:
刷新窗口狀態: window.update()
銷毀窗口: window.destroy()
自動觸發事件: window.after(sec,command) #表示多少秒以后自動執行command
置頂窗口: window.wm_attributes('-topmost',1)
隱藏窗口外部: window.overrideredirect(True)
設置最大的窗口: window.maxsize(600, 400)
設置最小的窗口: window.minsize(300, 240)
設置窗口是否可以縮放(兩種方法):
window.resizable(width=False, height=False)#禁止改變窗口大小window.resizable(0, 0) # 設置窗口大小不可變(3)獲取窗口的方法
winfo_x() 方法獲得窗口的x坐標,
winfo_y() 方法獲得窗口的y坐標
winfo_width() 方法獲得窗口的寬度
winfo_height() 方法獲得窗口的高度
以上四個方法都是無參方法,通過返回值我們可以獲得窗口的寬高。
運行結果如下:
(4)一個很重要的知識點
我們使用上述的方法得到的位置和寬高,其實是tk初始化時的一個值。因此在初始化的時候默認都是1,如果需要獲取準確的位置和大小信息 此時我們調用update方法,刷新win窗口。
運行腳本如下:
import tkinter win = tkinter.Tk() win.geometry("100x100") print("初始化的窗口的寬度和寬度為 %s * %s" % (win.winfo_width(),win.winfo_height())) win.update() print("update后的窗口的寬度和寬度為 %s * %s" % (win.winfo_width(),win.winfo_height())) win.mainloop()(5)常用的一些位置處理函數
設置窗口最大化
#設置窗口最大化: #方法一 root = Tk() w, h = root.maxsize() root.geometry("{}x{}".format(w, h)) #看好了,中間的是小寫字母x #方法二 root = Tk() w = root.winfo_screenwidth() h = root.winfo_screenheight() root.geometry("%dx%d" %(w, h)) #方法三 root = Tk() root.attributes("-fullscreen", true)設置居中顯示
def center_window(root, width, height):screenwidth = root.winfo_screenwidth()screenheight = root.winfo_screenheight()size = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)print(size)root.geometry(size)root.update()print(root.winfo_x())調用腳本:
import tkinter as tk root = tk.Tk() root.title('測試窗口') center_window(root, 500, 340) root.mainloop()二、關于控件的位置介紹
其實跟主窗口的訪問方式類似,主要是要找到對應的方法和函數。
import tkinter as tkdef center_window(root, width, height):screenwidth = root.winfo_screenwidth()screenheight = root.winfo_screenheight()size = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)root.geometry(size)root.update()def go():txt = 'Label1控件的位置信息如下:%s' % label1.winfo_geometry()label2.configure(text=txt)root.after(1,go)root = tk.Tk() root.title('測試窗口') center_window(root, 500, 340) label1 = tk.Label(root, text='測試用途的Label控件') label1.pack(expand=tk.YES) label2 = tk.Label(root) label2.pack() go() root.mainloop()主要用到的函數為:label1.winfo_geometry()
運行的效果如下:
具體參考:https://blog.csdn.net/dhjabc_1/article/details/105428853
總結
以上是生活随笔為你收集整理的python的tkinter窗口位置\坐标\大小等知识(自用笔记)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 类属性、类方法;私有属性、公有属性;私有
- 下一篇: pycharm 中写代码的提示的前符号