python中tkinter窗口位置\坐標\大小等實現示例
正在嘗試著做一個比較完善的畫圖軟件,計劃使用tkinter庫中的canvas控件來做,然后正在攻關圖形項位置、坐標、大小及其他屬性項的保存和加載的問題,剛好需要用到坐標、位置的知識,因此作為這個畫圖軟件的附帶產出物,整理成了本篇博文,分享給大家,一起研究研究,期待能對你工作帶來啟發(fā)和幫助。
不忘初心,方得始終,讓我們一起共勉!
好的,言歸正傳,回歸本篇博文的主題:python中tkinter窗口位置|坐標\大小等知識的科普。
大家都知道tkinter庫中有很多控件和主窗口,因此這些控件和主窗口都有對應的屏幕坐標的信息。因此我們可以分別進行介紹。
一、關于主窗口的介紹:
我們見的比較多的命令如下:
root.geometry("300x200+100+50")
這是什么意思呢?
其實:第一個是指窗口的寬度,第二個窗口的高度,第三個窗口左上點離左屏幕邊界距離,第四個窗口左上點離上面屏幕邊界距離。 那么,放在整段代碼里如下:
from tkinter import * root = Tk() root.geometry("300x200+100+50") root.mainloop()
顯示效果如下:
(1)窗口屬性設置
在上面程序的基礎上,在root = Tk()和root.mainloop()之間添加下面的代碼以在窗口中添加元素
窗口標題:root.title("title_a")
添加窗口圖標:root.iconbitmap(icon_file),icon_file就是一個.ico的圖標文件,使用絕對或相對路徑 設置窗口大小:root.geometry("x_WIDTHxx_HEIGHT"),其中將_WIDTH替換為窗口寬度,將_HEIGHT替換為窗口高度 設置窗口在屏幕上的位置:
root.geometry("+X+Y"),X/Y表示以屏幕左上角為頂點的窗口的坐標
(2)常用的事件處理函數:
刷新窗口狀態(tài):root.update()
銷毀窗口:root.destroy()
自動觸發(fā)事件:root.after(sec,command),表示多少秒以后自動執(zhí)行command
置頂窗口:root.wm_attributes('-topmost',1)
隱藏窗口外部:root.overrideredirect(True)
設置最大的窗口:root.maxsize(600, 400)
設置最小的窗口:root.minsize(300, 240)
設置窗口是否可以縮放(兩種方法):
root.resizable(width=False, height=False)#禁止改變窗口大小
root.resizable(0, 0) # 設置窗口大小不可變
(3)獲取窗口的方法
winfo_width獲得窗口的寬度,winfo_height獲得窗口的高度。以上兩個方法都是無參方法,通過返回值我們可以獲得窗口的寬高。
from tkinter import * def go(): txt = '窗口的左上角坐標為:(%s,%s)\n窗口的高度為:%s窗口的寬度為:%s' \ % (root.winfo_x(),root.winfo_y(),root.winfo_width(),root.winfo_height()) label1.configure(text=txt) root.after(1,go) root = Tk() root.geometry("300x200+100+50") label1 = Label(root) label1.pack(expand=YES) go() root.mainloop()
運行效果如下:
(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 tk 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) 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()
運行的效果如下:
到此這篇關于python中tkinter窗口位置\坐標\大小等實現示例的文章就介紹到這了,更多相關python中tkinter窗口位置\坐標\大小內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Django使用Celery加redis執(zhí)行異步任務的實例內容
在本篇文章里小編給大家整理的是關于Django使用Celery加redis執(zhí)行異步任務,需要的朋友們可以學習下。2020-02-02Python3以GitHub為例來實現模擬登錄和爬取的實例講解
在本篇內容里小編給大家分享的是關于Python3以GitHub為例來實現模擬登錄和爬取的實例講解,需要的朋友們可以參考下。2020-07-07python GUI庫圖形界面開發(fā)之PyQt5下拉列表框控件QComboBox詳細使用方法與實例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5下拉列表框控件QComboBox詳細使用方法與實例,需要的朋友可以參考下2020-02-02python爬蟲利器之requests庫的用法(超全面的爬取網頁案例)
這篇文章主要介紹了python爬蟲利器之requests庫的用法(超全面的爬取網頁案例),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12