Python QT 和 TK 的画布面板大小约束

·  阅读 4769

MedusaSorcerer的博客


使用 TK 或者 QT 程序编辑画布界面的时候, 可能会对于定位排版的时候, 使用了绝对位置参数定位, 哪怕是用了百分比的参数定位, 对于对窗口进行大小拖拽这样的事情, 也会影响美观, 所以就我个人而言这个问题, 我都是将窗口设置成不可拖拽改变大小的。

匿名网友:“怎么设置?”。

好的, 我们满足这个网友, 帮 TA 解决这个问题。

ps:内心戏真足~

PyQt5

对于 QT 程序, 虽然有一个 QT Designer 可以实现图形化编码, 并实现最终展示的画布界面, 但是, 个人感觉用不来, 可能是我太笨了, 还是喜欢用代码的方式写:

#!/usr/bin/env python
# _*_ Coding: UTF-8 _*_
from PyQt5 import QtWidgets

if __name__ == '__main__':
    app = QtWidgets.QApplication([])
    windows = QtWidgets.QWidget()
    windows.setWindowTitle('Medusa MQT')
    windows.setMinimumWidth(400)
    windows.setMaximumWidth(400)
    windows.setMinimumHeight(400)
    windows.setMaximumHeight(400)
    windows.show()
    app.exec_()
复制代码

在第九行至十二行代码中, 我们使用了配置最大和最小值来限制窗口大小, 而 QT 的展示上, 是连鼠标都没有了。 从上面的 GIF 中可以看到鼠标移动到界面边缘并没有出现双箭头图标, 也意味着不能改变其床头大小。

Tkinter

TK 稍微有一点点点点不一样, 虽然鼠标靠近画布边缘有双箭头图标, 但是由于设置了相关属性, 拖拽实际上并无效果。

#!/usr/bin/env python
# _*_ Coding: UTF-8 _*_
import tkinter as tk

if __name__ == '__main__':
    window = tk.Tk()
    window.title('Medusa MTK')
    window.minsize(400, 400)
    window.maxsize(400, 400)
    window.mainloop()
复制代码

在第八、第九行设置了最大和最小的宽高数值, 所以这样就限制了窗口拖拽的最大和最小尺寸。 示例中向内拖拽测试仅有一次, 但是实际上向内向外拖拽都是没有效果的, 达到了预期的效果。

后记

实际上开发的画布组件一般情况会用相对数值定位比较多, 如果不限制大小, 可能会把组件遮挡, 可能会留下一大块空白区域, 在美观上, 还是存在一些小问题, 当然, 这并不影响功能使用。 如果你是一个和我一样想编辑出更好的小程序, 还有这个 Python Tkinter 使用背景图片以及透明字体PyQT5 设置背景图片的案例 可以了解一下。

设置宽高不可变的目的也是为了背景图展示, 不会出现背景图覆盖不完全的问题。

分类:
代码人生
标签:
收藏成功!
已添加到「」, 点击更改