PYQT 及一些python里面的问题 (定期更新)

1.不同文件之间的变量怎么调用
答:hello.py文件有 a=1
hate.py文件里面写

from hello import a
print(a)

2.想调用keras 里面的callback.py函数的输出结果获取,转到Qlabel里面 -->待解决()放弃了弄了好久怎么导入都不行,直接换Logger()来获取控制台信息了(下次再把定时器的也加进去然后做个每天读取显示吧。感觉定时器不治本还是不做了)

class Ui_Dialog3(QtWidgets.QWidget,Ui_Form): 
	def xxx(self):
   		Logger()   # 去调用它
   	# 下面的几句话就是我打开保存的txt文件读取出来显示在textEdit这个控件里面(ps:有更好方法告诉我:(  )
		f = open('99.txt', 'r')   # 这里不能用rb,二进制读取,否则每行后面有其他字符
        str = f.read()
        self.textEdit.append("%s" % (str))
        f.close()
         
class Logger(object):
    def __init__(self, log_path="default.log"):
        self.terminal = sys.stdout
        # self.log = open(log_path, "w+")
        self.log = open(log_path, "wb", buffering=0)
    # def print(self, message):
    #     self.terminal.write(message + "\n")
    #     self.log.write(message.encode('utf-8') + b"\n")
    def write(self, message):
        self.terminal.write(message)  # 这里没有.encode('utf-8') 有则报错write() argument must be str, not bytes
        self.log.write(message.encode('utf-8')) # .解决这个bug bytes-like object is required, not 'str'  ,把str转为bytes

    def flush(self):
        self.terminal.flush()    # 没有flush就会导致当数据有150行把就会只存写一些数据进txt,剩下的会在程序退出之后才写进txt,这个是缓冲区的问题,记得是说控制台里面一页写满了就会进入flush
        self.log.flush()

    def close(self):
        self.log.close()
sys.stdout = Logger("99.txt")    

3.子窗口占用QTime()怎么解决 -->用Qtime()

# 以下五句话是定时器15ms执行一次连接ShowCameraOneImage函数的一次截图
self.capture = cv2.VideoCapture(0)
# self.DoNotShow = True  # 我自己要用的
self.timer_camera = QTimer()
self.timer_camera.start(15)  # 1000ms == 1s
self.timer_camera.timeout.connect(self.ShowCameraOneImage)  # 连接槽函数ShowCameraOneImage

然后就是ShowCameraOneImage()里面写东西了
4.返回主窗口为何不能打开摄像头 -->因为没有release(),初始化会重新调用videocapture(0),两个videocapture(0)会导致报错
5.关闭摄像头问题 -->利用定时器

self.capture.release()   # 关闭电源
cv2.destroyAllWindows()

6.Qwidget背景 --> 不会然后就用了

mainWindowColor = "background-color:#FFE5B2"
self.setStyleSheet(mainWindowColor)

7.按钮按下传参 -->还没做呢
8.global和globals区别 -->等待测试
9.不同文件怎么共用一个变量并且实现真的是共用之后这边改变那边也改变 -->暂时想到就是放进文件夹里面了来完成了,别人说用一个类里面然后去里面读取,这个等之后我一次总结尝试才知道
10.查找一个ui文件路径时候,不小心删除了,因为我是sudo打开的pycharm,不知道这个有没有影响,还是说这个找路径的时候打开是用sudo打开的,导致去回收站恢复时候不够权限
此时

cd ~/.local/share/Trash/files
ls
cp zi4.ui /home/gmh/01

再复制回去就好,奇怪了真的是

11.想查询当前文件路径
#当前文件的路径

pwd = os.getcwd()

#当前文件的父路径

father_path=os.path.abspath(os.path.dirname(pwd)+os.path.sep+".")

#当前文件的前两级目录

grader_father=os.path.abspath(os.path.dirname(pwd)+os.path.sep+"..")

print(pwd)

12.看时间,想在界面做一个时间(不过没我想要的简洁版就放下了)

from PyQt5.QtCore import QDate, QTime, QDateTime, Qt
now = QDate.currentDate()
print(now.toString(Qt.ISODate))
print(now.toString(Qt.DefaultLocaleLongDate))
datetime = QDateTime.currentDateTime()
print(datetime.toString())
time = QTime.currentTime()
print(time.toString(Qt.DefaultLocaleLongDate))

13.想把文件路径保存,所以用了pickle来存储路径变量
可以参考这篇文章:https://blog.csdn.net/qq_27575895/article/details/81100232
14.让qt应用程序支持触摸(用到USB触摸屏控制器和tslib,且需要Qt应用程序支持热插拔)
去参考这篇博客:https://blog.csdn.net/orz415678659/article/details/9136575

15.ubuntu qtdesigned 按比例放大缩小(点击它红色的那个东西才会出来,或者在空白地方右键-lay out-栅格布局)
通过栅格布局来实现按比例放大缩小,而不是网上一直说的垂直布局水平布局(那个用了不能达到我想要的效果因为太难看了,即使水平layout里面有垂直layout最后加弹簧也只会导致弹簧太长你改变不了太难看了所以放弃这个念头了)
在这里插入图片描述
栅格布局来控制控件之间的比例(之后自己保存再运行拉伸一下就看到效果了)
在这里插入图片描述通过设置minimumSize来控制控件大小
在这里插入图片描述

通过styleSheet实现textEdit背景(Qlabel的话那个还是用原来的那个Qpixmap)
在这里插入图片描述
通过图下这样子使得四周变成圆角好看很多(如果是其他东西记得对应上,反正有错误自己试几次就会了)
在这里插入图片描述
或者直接border-radius: 10px;

16.下面就是利用qrc文件,转成py文件达到textEdit里面加入背景,首先点击添加资源
在这里插入图片描述
然后自己弄成我这样的(对了,win下只能png格式,不能jpg格式)
在这里插入图片描述
这个时候点击ok也不能看到qtdesigned效果,要这样子有两个bacjground才行哦,下面图片有代码其实是一张图片放进textEdit当做背景
在这里插入图片描述
到外面还要做两件事情
第一个刚刚的ui文件变py文件这不用说了,第二个rc.qrc文件变rc.py文件。(两种方法,1是添加external tool,而是自己敲代码)
1方法:
在这里插入图片描述
argument填:-m PyQt5.pyrcc_main F i l e N a m e FileName FileName -o F i l e N a m e W i t h o u t E x t e n s i o n FileNameWithoutExtension FileNameWithoutExtension_rc.py

找到刚刚的rc.qrc文件如果有锁,先解锁
sudo chown -R $USER 文件夹路径

没有则(我是pyqt5,pyqt4的自己改数字)
pyrcc5 -o rc.py rc.qrc
ok,进去pycharm,run你的程序吧

不过有一个问题就是,自从我第一次生成的qrc文件删除之后再重新建a.qrc,这个时候我ui转py,发现这个py最后面是import a_rc.qrc 然后我删了ui重新建立一个也没用,删除所有qrc文件重新来也没用,重启电脑也是,也不知道到底这个rc哪里出来了,我哪里没删干净,还是说这是一个bug,不得而知,弄的很烦躁。如果以及解决这个问题的朋友希望你能告诉我原因

问题解决了:pyrcc5 -o tt_rc.py tt.qrc 要将tt.qrc编译成tt_rc.py,而不是tt.py怪自己没好好看例子,做事不认真该打。
在这里插入图片描述
border: none; stylesheet里写这个就无边框
textEdit里面的lineWrapMode设置WidgetWidth可以让它显示两个字符时候第二个字符不会跳到下一行
栅格布局的layoutColumnStre… 可以让窗口里面的控件按大小缩放
layoutHorizontalS… 可以让两个控件之间留有多少空隙
17.label文字居中:https://blog.csdn.net/qq_14997473/article/details/80873719?utm_source=blogxgwz7

18.OpenCV和Python识别二维码和条形码
看这篇博客,按步骤的话有点代码问题自己改一下就好: http://ju.outofmemory.cn/entry/362681
最后类似这样执行命令行参数就显示里面内容了,python test1.py --image ma.png
19.VideoStream取帧的二维码识别:

二维码生成网上随便找:https://cli.im/text?a4855329641f313be1d71ab15ec5eb98
只是这个我有点困惑,我不知道vs=VideoStream(src=0).start() 这个怎么让它release,因为我原来摄像头是用cv2.VideoCapture(0)取帧的,这个要release才行,不然两句cv2.VideoCapture(0)就会报错。因为解决不了
所以还是采用cv2.VideoCapture(0)。
20.cv2.VideoCapture取帧的二维码识别:
下面是cv2.VideoCapture(0)二维码识别直接复制就可以看到效果了

import cv2
import pyzbar.pyzbar as pyzbar

def decodeDisplay(image):
 barcodes = pyzbar.decode(image)
 for barcode in barcodes:
  # 提取二维码的边界框的位置
  # 画出图像中条形码的边界框
  (x, y, w, h) = barcode.rect
  cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)

  # 提取二维码数据为字节对象,所以如果我们想在输出图像上
  # 画出来,就需要先将它转换成字符串
  barcodeData = barcode.data.decode("utf-8")
  barcodeType = barcode.type

  # 绘出图像上条形码的数据和条形码类型
  text = "{} ({})".format(barcodeData, barcodeType)
  cv2.putText(image, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX,
              .5, (0, 0, 125), 2)

  # 向终端打印条形码数据和条形码类型
  print("[INFO] Found {} barcode: {}".format(barcodeType, barcodeData))
 return image

def detect():
 camera = cv2.VideoCapture(0)
 while True:
  # 读取当前帧
  ret, frame = camera.read()
  # 转为灰度图像
  gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
  im = decodeDisplay(gray)

  cv2.waitKey(5)
  cv2.imshow("camera", im)

 camera.release()
 cv2.destroyAllWindows()


if __name__ == '__main__':
 detect()

21.不能单独用widget,要mainwinow和widget才能一起用,否则报错

22

 self.dia.label.setWordWrap(True)  # setWordWrap可以让label可以换行
 self.dia.label.setText("你一共支付%d元,欢迎下次光临" % (self.sum_price))
 time.sleep(2)  # 如果是self.time.sleep那么会导致self.dia.hide()不能运行,好应该是time.sleep不是qt里面的,是自己开一个进程来sleep
 self.dia.hide()

23.self.setWindowFlags(Qt.CustomizeWindowHint) # 去掉标题栏

24.CV2 puttext不能显示中文问题
1)首先只是显示英文直接cv2.putText
img_rect = cv2.putText(img_rect, str(i) + self.objlist[i], (self.boxlist[i][0,0], self.boxlist[i][0,1]), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
#各参数依次是:图片,添加的文字,左上角xy坐标,字体,字体大小,颜色,字体粗细

2)CV2 puttext不能显示中文问题

from PIL import Image, ImageDraw, ImageFont
# img = cv2.imread('/home/123/dev/123-projects/GoodsClassify_Level1/data/picture_and_video/ordinary/02/1.jpg')
cv2img = cv2.cvtColor(img_rect, cv2.COLOR_BGR2RGB)  # cv2和PIL中颜色的hex码的储存顺序不同
pilimg = Image.fromarray(cv2img)
# PIL图片上打印汉字
draw = ImageDraw.Draw(pilimg)  # 图片上打印
font = ImageFont.truetype("/media/gmh/TOP/simhei.ttf", 30,encoding="utf-8")  # 参数1:字体文件路径,参数2:字体大小
draw.text(center_point, "%s" %(eee), (255, 0, 0), font=font)  # 参数1:打印坐标,参数2:文本,参数3:字体颜色,参数4:字体
# PIL图片转cv2 图片
img_rect = cv2.cvtColor(np.array(pilimg), cv2.COLOR_RGB2BGR)

25.在qtdesigner里面,ctrl+R可以预览。

26.框里面显示提示信息

  1. 直接代码:self.textEdit_3.setPlaceholderText("请输入提示符")
  2. qtdesigner里面调:在这里插入图片描述

27.
在这里插入图片描述在这里插入图片描述
可以看这篇文章得到答案:
连接

28. 将海康威视网络摄像头的视频流保存为mp4
切记,切记,一定要先将对应分辨率还有帧数对上才能保存,切记,切记。否则保存视频是1kb或者几kb,根本打不开
mp4的话比avi压缩要好

29. 按钮添加事件过滤器来监控鼠标点击和移动
效果图
需求:蓝色的为点击按钮事件,点一次触发一次,点了以后高亮,其他三个不亮。红色的鼠标移到那个区域上触发,触发就高亮,其他不亮,鼠标移开后就四个红色的都不亮

在这里插入图片描述
代码如下

# from getDataThread import getDataThread
from PyQt5.QtWidgets import QApplication, QWidget
from Mywidget import *
from PyQt5.QtCore import Qt, QEvent
import sys

class Brain(QWidget,Ui_Form):
    def __init__(self, parent=None):
        super(Brain, self).__init__(parent)
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self.Init_equipment_statu()


    def Init_equipment_statu(self):
        self.setCursor(Qt.PointingHandCursor)  # 设置鼠标形状为十字形

        # 按钮添加事件过滤器
        self.ui.pushButton_1.installEventFilter(self)
        self.ui.pushButton_2.installEventFilter(self)
        self.ui.pushButton_3.installEventFilter(self)
        self.ui.pushButton_4.installEventFilter(self)
        self.ui.pushButton_5.installEventFilter(self)
        self.ui.pushButton_6.installEventFilter(self)
        self.ui.pushButton_7.installEventFilter(self)
        self.ui.pushButton_8.installEventFilter(self)

        # 启动线程
        self.getDataThread = getDataThread()
        self.getDataThread.start()
        # self.getDataThread.Qimg.connect(self.show_video)

    # 定义鼠标指向按钮2的事件
    def eventFilter(self, object, event):
        if object == self.ui.pushButton_1:
            if event.type() == QEvent.Enter:
                self.ui.pushButton_1.setStyleSheet(
                    'background-color: rgb(255, 130, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_2.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_3.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_4.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                return True  # 说明这个事件已被处理,其他控件别插手

            elif event.type() == QEvent.Leave:
                self.ui.pushButton_1.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_2.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_3.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_4.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                return True

        elif object == self.ui.pushButton_2:
            if event.type() == QEvent.Enter:
                self.ui.pushButton_1.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_2.setStyleSheet(
                    'background-color: rgb(255, 130, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_3.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_4.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                return True

            elif event.type() == QEvent.Leave:
                self.ui.pushButton_1.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_2.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_3.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_4.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                return True

        elif object == self.ui.pushButton_3:
            if event.type() == QEvent.Enter:
                self.ui.pushButton_1.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_2.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_3.setStyleSheet(
                    'background-color: rgb(255, 130, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_4.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                return True

            elif event.type() == QEvent.Leave:
                self.ui.pushButton_1.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_2.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_3.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_4.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                return True


        elif object == self.ui.pushButton_4:
            if event.type() == QEvent.Enter:
                self.ui.pushButton_1.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_2.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_3.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_4.setStyleSheet(
                    'background-color: rgb(255, 130, 0);font: 75 12pt "Arial";')
                return True

            elif event.type() == QEvent.Leave:
                self.ui.pushButton_1.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_2.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_3.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                self.ui.pushButton_4.setStyleSheet(
                    'background-color: rgb(255, 170, 0);font: 75 12pt "Arial";')
                return True


        elif object == self.ui.pushButton_5:
            if event.type() == QEvent.MouseButtonPress:
                self.ui.pushButton_5.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(0, 170, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_6.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_7.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_8.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                return True

            elif event.type() == QEvent.MouseButtonRelease:
                self.ui.pushButton_5.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_6.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_7.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_8.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                return True

        elif object == self.ui.pushButton_6:
            if event.type() == QEvent.MouseButtonPress:
                self.ui.pushButton_5.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_6.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(0, 170, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_7.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_8.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                return True

            elif event.type() == QEvent.MouseButtonRelease:
                self.ui.pushButton_5.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_6.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_7.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_8.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                return True

        elif object == self.ui.pushButton_7:
            if event.type() == QEvent.MouseButtonPress:
                self.ui.pushButton_5.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_6.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_7.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(0, 170, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_8.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                return True

            elif event.type() == QEvent.MouseButtonRelease:
                self.ui.pushButton_5.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_6.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_7.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_8.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                return True

        elif object == self.ui.pushButton_8:
            if event.type() == QEvent.MouseButtonPress:
                self.ui.pushButton_5.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_6.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_7.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_8.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(0, 170, 255);font: 75 12pt "Arial";')
                return True

            elif event.type() == QEvent.MouseButtonRelease:
                self.ui.pushButton_5.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_6.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_7.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                self.ui.pushButton_8.setStyleSheet(
                    'border-radius: 20px;background-color: rgb(170, 255, 255);font: 75 12pt "Arial";')
                return True


        return QWidget.eventFilter(self, object, event) # 交由QWidget里的控件处理

if __name__ == '__main__':
    app = QApplication(sys.argv)
    brain = Brain()
    brain.show()
    sys.exit(app.exec_())


QEvent.type类型看下图
在这里插入图片描述

29.获取按钮相对屏幕左上角的位置
参考这篇文章

在pyqt5 里面是左上角为原点,往右为x,往下为y。
为了解决窗口被客户移动,导致监控按钮的位置出现变换,我的做法是:
通过定时器监控wdiget位置,
然后self.frameGeometry().x()获取widget左上角,self.ui.pushButton_1.geometry().x() 获取控件相对widget的位置
相加起来就是控件相对屏幕的x位置了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值