python中tkinter窗口位置坐標(biāo)大小等實(shí)現(xiàn)示例
正在嘗試著做一個(gè)比較完善的畫圖軟件,計(jì)劃使用tkinter庫(kù)中的canvas控件來做,然后正在攻關(guān)圖形項(xiàng)位置、坐標(biāo)、大小及其他屬性項(xiàng)的保存和加載的問題,剛好需要用到坐標(biāo)、位置的知識(shí),因此作為這個(gè)畫圖軟件的附帶產(chǎn)出物,整理成了本篇博文,分享給大家,一起研究研究,期待能對(duì)你工作帶來啟發(fā)和幫助。
不忘初心,方得始終,讓我們一起共勉!
好的,言歸正傳,回歸本篇博文的主題:python中tkinter窗口位置|坐標(biāo)大小等知識(shí)的科普。
大家都知道tkinter庫(kù)中有很多控件和主窗口,因此這些控件和主窗口都有對(duì)應(yīng)的屏幕坐標(biāo)的信息。因此我們可以分別進(jìn)行介紹。
一、關(guān)于主窗口的介紹:
我們見的比較多的命令如下:
root.geometry('300x200+100+50')
這是什么意思呢?
其實(shí):第一個(gè)是指窗口的寬度,第二個(gè)窗口的高度,第三個(gè)窗口左上點(diǎn)離左屏幕邊界距離,第四個(gè)窗口左上點(diǎn)離上面屏幕邊界距離。 那么,放在整段代碼里如下:
from tkinter import *root = Tk()root.geometry('300x200+100+50')root.mainloop()
顯示效果如下:
(1)窗口屬性設(shè)置
在上面程序的基礎(chǔ)上,在root = Tk()和root.mainloop()之間添加下面的代碼以在窗口中添加元素
窗口標(biāo)題:root.title('title_a')
添加窗口圖標(biāo):root.iconbitmap(icon_file),icon_file就是一個(gè).ico的圖標(biāo)文件,使用絕對(duì)或相對(duì)路徑 設(shè)置窗口大小:root.geometry('x_WIDTHxx_HEIGHT'),其中將_WIDTH替換為窗口寬度,將_HEIGHT替換為窗口高度 設(shè)置窗口在屏幕上的位置:
root.geometry('+X+Y'),X/Y表示以屏幕左上角為頂點(diǎn)的窗口的坐標(biāo)
(2)常用的事件處理函數(shù):
刷新窗口狀態(tài):root.update()
銷毀窗口:root.destroy()
自動(dòng)觸發(fā)事件:root.after(sec,command),表示多少秒以后自動(dòng)執(zhí)行command
置頂窗口:root.wm_attributes(’-topmost’,1)
隱藏窗口外部:root.overrideredirect(True)
設(shè)置最大的窗口:root.maxsize(600, 400)
設(shè)置最小的窗口:root.minsize(300, 240)
設(shè)置窗口是否可以縮放(兩種方法):
root.resizable(width=False, height=False)#禁止改變窗口大小
root.resizable(0, 0) # 設(shè)置窗口大小不可變
(3)獲取窗口的方法
winfo_width獲得窗口的寬度,winfo_height獲得窗口的高度。以上兩個(gè)方法都是無參方法,通過返回值我們可以獲得窗口的寬高。
from tkinter import * def go(): txt = ’窗口的左上角坐標(biāo)為:(%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()
運(yùn)行效果如下:
(4)一個(gè)很重要的知識(shí)點(diǎn)
我們使用上述的方法得到的位置和寬高,其實(shí)是tk初始化時(shí)的一個(gè)值。因此在初始化的時(shí)候默認(rèn)都是1,如果需要獲取準(zhǔn)確的位置和大小信息 此時(shí)我們調(diào)用update方法,刷新win窗口。
運(yùn)行腳本如下:
import tkinterwin = 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)常用的一些位置處理函數(shù)
設(shè)置窗口最大化
#設(shè)置窗口最大化:#方法一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)
設(shè)置居中顯示
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())
調(diào)用腳本:
import tkinter as tkroot = tk.Tk()root.title(’測(cè)試窗口’)center_window(root, 500, 340)root.mainloop()
二、關(guān)于控件的位置介紹
其實(shí)跟主窗口的訪問方式類似,主要是要找到對(duì)應(yīng)的方法和函數(shù)。
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(’測(cè)試窗口’)center_window(root, 500, 340)label1 = tk.Label(root, text=’測(cè)試用途的Label控件’)label1.pack(expand=tk.YES)label2 = tk.Label(root)label2.pack()go()root.mainloop()
主要用到的函數(shù)為:label1.winfo_geometry()
運(yùn)行的效果如下:
到此這篇關(guān)于python中tkinter窗口位置坐標(biāo)大小等實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)python中tkinter窗口位置坐標(biāo)大小內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. python實(shí)現(xiàn)讀取類別頻數(shù)數(shù)據(jù)畫水平條形圖案例2. Java 基于UDP協(xié)議實(shí)現(xiàn)消息發(fā)送3. Python編寫nmap掃描工具4. php5.6不能擴(kuò)展redis.so的解決方法5. python 爬取嗶哩嗶哩up主信息和投稿視頻6. 關(guān)于HTML5的img標(biāo)簽7. python 如何停止一個(gè)死循環(huán)的線程8. CSS3實(shí)現(xiàn)動(dòng)態(tài)翻牌效果 仿百度貼吧3D翻牌一次動(dòng)畫特效9. ASP.NET MVC前臺(tái)動(dòng)態(tài)添加文本框并在后臺(tái)使用FormCollection接收值10. PHP獲取時(shí)間戳等相關(guān)函數(shù)匯總
