窗口操作案例---窗口标志

1、窗口标志,可以通过相关参数设置整个窗口的外观。通过setWindowFlags()方法传递相关参数的值可以修改整个窗口的外观。(可以设置窗口也可以获取窗口。)

窗口样式也哟多种QWidget(),也可以换成其他的Qt.sheet()是一个窗口或者部件Macintosh表单。

 

 窗口无边框、手动添加标题栏控件等,设计自己的界面。

2、案例(一)创建一个窗口、无边框无标题栏窗口半透明、自定义最小化、最大化关闭按钮(因为去掉了窗口标题栏,所以需要自定最大化、最小化等按钮)、支持拖拽用户区域移动。

①:去掉窗口标题栏

# 设置窗口无边框,方法一
window = QWidget(flags=Qt.FramelessWindowHint)
# 方法二
window = QWidget()
window.setWindowFlags(Qt.FramelessWindowHint)

②:设置窗口透明度

# 设置窗口透明度
window.setWindowOpacity(0.9)

③:自定义最小化、最大化以及关闭按钮(整个窗口右上角创建三个独立按钮,倒是逐个监听他们的事件方法)(可以通过信号与槽执行该功能,也可以通过执行该方法去执行该功能。)

# def close():
#     window.close()
# close_btn.pressed.connect(close)
close_btn.pressed.connect(window.close)

3、代码重构:当代码特别多,修改困难时,就需对其重构,(封装重构)即将他封装为一个类。

from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # 设置窗口无边框
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setWindowOpacity(0.9)
        # 设置控件
        self.setWindowTitle("顶层窗口操作案例")
        self.resize(500, 500)
        self.setup_ui()

    def setup_ui(self):

        def max_normal():
            if self.isMaximized():
                self.showNormal()
                max_btn.setText("最大化")
            else:
                self.showMaximized()
                max_btn.setText("恢复")

        # 公共数据
        top_margin = 10
        btn_w = 80
        btn_h = 40
        close_btn = QPushButton(self)
        close_btn.setText("关闭")
        close_btn.resize(btn_w, btn_h)
        # close_btn_w = close_btn.width()
        window_w = self.width()
        close_btn_x = window_w - btn_w
        close_btn_y = top_margin
        close_btn.move(close_btn_x, close_btn_y)

        # def close():
        #     window.close()
        # close_btn.pressed.connect(close)
        close_btn.pressed.connect(self.close)

        # 设置最大化按钮
        max_btn = QPushButton(self)
        max_btn.setText("最大化")
        max_btn.resize(btn_w, btn_h)
        max_btn_x = close_btn_x - btn_w
        max_btn_y = top_margin
        max_btn.move(max_btn_x, max_btn_y)
        max_btn.pressed.connect(max_normal)

        mini_btn = QPushButton(self)
        mini_btn.setText("最小化")
        mini_btn.resize(btn_w, btn_h)
        mini_btn_x = max_btn_x - btn_w
        mini_btn_y = top_margin
        mini_btn.move(mini_btn_x, mini_btn_y)
        mini_btn.pressed.connect(self.showMaximized)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

。七十二。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值