python 窗体在屏幕边缘自动隐藏_C# 窗体靠近屏幕边缘自动隐藏*学习(类似于QQ)...

using System;

using System.Collections.Generic;

using System.Drawing;

using System.Windows.Forms;

using System.ComponentModel;

using System.Data;

namespace WinHide

{

public partial class MainForm : Form

{

public MainForm()

{

InitializeComponent();

}

#region 窗体隐藏部分

void Timer1Tick(object sender, EventArgs e)

{

if(this.Bounds.Contains(Cursor.Position))

{

switch(this.StopAnhor)

{

case AnchorStyles.Top:

this.Location = new Point(this.Location.X,0);

break;

case AnchorStyles.Left:

this.Location = new Point(0,this.Location.Y);

break;

case AnchorStyles.Right:

this.Location = new Point(Screen.PrimaryScreen.Bounds.Width-this.Width,this.Location.Y);

break;

}

}else

{

switch(this.StopAnhor)

{

case AnchorStyles.Top:

this.Location = new Point(this.Location.X,(this.Height-4)*(-1));

break;

case AnchorStyles.Left:

this.Location = new Point((this.Width-4)*(-1),this.Location.Y);

break;

case AnchorStyles.Right:

this.Location = new Point(Screen.PrimaryScreen.Bounds.Width-4,this.Location.Y);

break;

}

}

}

internal AnchorStyles StopAnhor = AnchorStyles.None;

private void mStopAnhor()

{

if(this.Top <= 0)

{

StopAnhor = AnchorStyles.Top;

}

else if(this.Left <= 0)

{

StopAnhor = AnchorStyles.Left;

}

else if(this.Right >= Screen.PrimaryScreen.Bounds.Width)

{

StopAnhor = AnchorStyles.Right;

}

else

{

StopAnhor = AnchorStyles.None;

}

}

void MainFormLocationChanged(object sender, EventArgs e)

{

this.mStopAnhor();

}

#endregion

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用Qt框架提供的QDesktopWidget和QRect类来实现靠近屏幕边缘自动隐藏屏幕边。下面是一个简单的示例代码,演示了如何实现这一功能: ```python from PyQt5 import QtWidgets, QtCore class MainWindow(QtWidgets.QMainWindow): def __init__(self): super().__init__() # 设置口大小和位置 self.setFixedSize(200, 200) self.move(100, 100) # 监听口移动事件 self.old_pos = self.pos() self.move_event = QtCore.QEvent.Type(QtCore.QEvent.Move) self.installEventFilter(self) def eventFilter(self, obj, event): if event.type() == self.move_event: # 计算口与屏幕边缘的距离 desktop = QtWidgets.QApplication.desktop() screen_rect = desktop.screenGeometry(self) window_rect = self.frameGeometry() distance_left = window_rect.left() - screen_rect.left() distance_right = screen_rect.right() - window_rect.right() distance_top = window_rect.top() - screen_rect.top() distance_bottom = screen_rect.bottom() - window_rect.bottom() # 判断是否需要隐藏口 if distance_left <= 0 or distance_right <= 0 or distance_top <= 0 or distance_bottom <= 0: self.old_pos = self.pos() self.hide() return super().eventFilter(obj, event) def showEvent(self, event): # 口显示时恢复位置 self.move(self.old_pos) return super().showEvent(event) ``` 在上述示例代码中,我们创建了一个名为MainWindow的口,并重写了它的eventFilter()和showEvent()方法。在eventFilter()方法中,我们监听口移动事件,并计算口与屏幕边缘的距离。如果靠近屏幕边缘,则隐藏口并记录口原始位置。在showEvent()方法中,我们在口显示时恢复口位置。 需要注意的是,上述示例代码仅演示了如何隐藏口。如果需要在靠近屏幕边缘时将口固定在屏幕边缘,可以根据计算出的距离调整口位置。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值