![Python全栈开发:高阶编程](https://wfqqreader-1252317822.image.myqcloud.com/cover/553/47216553/b_47216553.jpg)
2.3 主窗口
主窗口是一个容器元素,可以在其上添加控件,并呈现给用户。
1.创建主窗口对象
可以通过Tkinter模块中的Tk类创建主窗口对象,用于完成主窗口的创建,其语法格式如下:
![](https://epubservercos.yuewen.com/C59D0E/26581417201312406/epubprivate/OEBPS/Images/Figure-P20_19080.jpg?sign=1739990205-f6RyaVRHxcA34ObTiQMF304cj8P8w1xO-0-5580d5af7f5cb61d1e4930e63069984e)
2.主窗口对象的相关方法
1)title()方法
该方法用于设置主窗口的标题,其语法格式如下:
![](https://epubservercos.yuewen.com/C59D0E/26581417201312406/epubprivate/OEBPS/Images/Figure-P20_19081.jpg?sign=1739990205-2mV1TnYqm8F1ANpC51SL1RvyrI9PNOPO-0-0847781c96c8b587b6c74defee5c0da0)
其中,参数string表示主窗口的标题。
2)iconbitmap()方法
该方法用于设置和获取主窗口的图标,其语法格式如下:
![](https://epubservercos.yuewen.com/C59D0E/26581417201312406/epubprivate/OEBPS/Images/Figure-P20_19082.jpg?sign=1739990205-bB5nGiYCZx0XGfv3fYNqbo9cSU94QnOZ-0-ad54f0b489985d58836a1be5b738585d)
其中,参数bitmap表示主窗口的图标。
3)geometry()方法
该方法用于调节主窗口的尺寸和位置,其语法格式如下:
![](https://epubservercos.yuewen.com/C59D0E/26581417201312406/epubprivate/OEBPS/Images/Figure-P20_19083.jpg?sign=1739990205-y8yybMji7iGuIhlU2dgVkmZYc1bmj4tH-0-24bde8fb744fce74fecd4f742c59a867)
其中,参数newGeometry表示主窗口尺寸和位置的特定格式,该格式为widthxheight±x±y,width和height表示主窗口的宽和高,x和y表示主窗口左上角的x轴坐标和y轴坐标。
4)resizable()方法
该方法用于设置主窗口能否最大化,其语法格式如下:
![](https://epubservercos.yuewen.com/C59D0E/26581417201312406/epubprivate/OEBPS/Images/Figure-P20_19084.jpg?sign=1739990205-WOkQmtfwHqbwrYffi0SgUuCduwPPSnuU-0-fd1e4f6394363e8558ef2dc093490051)
其中,参数width表示主窗口横向能否最大化;参数height表示主窗口纵向能否最大化。
5)maxsize()方法
该方法用于设置和获取主窗口的最大尺寸,其语法格式如下:
![](https://epubservercos.yuewen.com/C59D0E/26581417201312406/epubprivate/OEBPS/Images/Figure-P20_19085.jpg?sign=1739990205-YEkjUwTXMHAkfpfunwGS5FokERJak0gc-0-f406a98618e7838a94b1abb261eaa463)
其中,参数width表示主窗口的宽度;参数height表示主窗口的高度。
6)protocol()方法
该方法用于将回调函数与相应的规则进行绑定,其语法格式如下:
![](https://epubservercos.yuewen.com/C59D0E/26581417201312406/epubprivate/OEBPS/Images/Figure-P21_19086.jpg?sign=1739990205-NlcLFOHG4G5xGzcqqLAaQheq6294Nhhk-0-69093cad46eb3470677a2bec89b84637)
其中,参数name表示规则,包括WM_DELETE_WINDOW(窗口被关闭时)、WM_SAVE_YOURSELF(窗口被保存时)和WM_TAKE_FOCUS(窗口获得焦点时);参数func表示回调函数。
7)mainloop()方法
该方法用于主事件循环,其语法格式如下:
![](https://epubservercos.yuewen.com/C59D0E/26581417201312406/epubprivate/OEBPS/Images/Figure-P21_19087.jpg?sign=1739990205-EJxNF87PU9X5vrmQb0JAZ1jANoUFJ2Bs-0-78b8abe2dd1b9686eeac80357e919502)
3.创建主窗口
创建主窗口有两种方式,分别为使用Tk类和Tk类的子类。
1)使用Tk类创建主窗口
示例代码如下:
![](https://epubservercos.yuewen.com/C59D0E/26581417201312406/epubprivate/OEBPS/Images/Figure-P21_19088.jpg?sign=1739990205-dVRZhOaUZb97Q240koN9fiHMFnU7Agob-0-88d5d7a9064e56d1045c02eb3d9b74e5)
上面代码的运行结果如图2-2所示。
![](https://epubservercos.yuewen.com/C59D0E/26581417201312406/epubprivate/OEBPS/Images/Figure-P21_10533.jpg?sign=1739990205-7CtAgqtxLdNpSLyJCEqtfpWJEfsOqSxK-0-43afc85d94471527be07da86bce9c116)
图2-2 通过Tk类创建主窗口
2)使用Tk类的子类创建主窗口
示例代码如下:
![](https://epubservercos.yuewen.com/C59D0E/26581417201312406/epubprivate/OEBPS/Images/Figure-P22_19089.jpg?sign=1739990205-4D890NMzSvzlxpSDuSxmSRE24iK6JFB8-0-5dc223c935649df55fa2dbe230c0a726)
上面代码的运行结果如图2-3所示。
![](https://epubservercos.yuewen.com/C59D0E/26581417201312406/epubprivate/OEBPS/Images/Figure-P22_10547.jpg?sign=1739990205-NWpYsQ0m98vEaOpwkWIytxCrmEDRzCU5-0-667967359609c29d762e187c08a86ecd)
图2-3 使用Tk类的子类创建主窗口