小编eyl*_*esc的帖子

Qt - Flat QPushButton,背景颜色不起作用

我QPushButton在Qt Designer中创建了这个样式表:

QPushButton#pushButton { 
    background-color: #ffffff;
}
QPushButton#pushButton:disabled {
    background-color: yellow; 
}
QPushButton#pushButton:pressed {
    background-color: orange; 
}
QPushButton#pushButton:focus:pressed { 
    background-color: black;
 }
QPushButton#pushButton:focus { 
    background-color: green; 
}
QPushButton#pushButton:hover {
     background-color: red;
 }
QPushButton#pushButton:checked { 
    background-color: pink;
 }
Run Code Online (Sandbox Code Playgroud)

它工作,但当我在属性中检查"平",然后它不再工作,我想问你为什么?我怎么能这样做,如果我需要平板QPushButton?

qt flat qtstylesheets qpushbutton

7
推荐指数
1
解决办法
4311
查看次数

qt相机示例不起作用

我正在尝试在Ubuntu,Qt 5.6上执行QCamera示例.观察到"缺少相机服务"消息.

defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.camera"
Run Code Online (Sandbox Code Playgroud)

ubuntu qt qt5.6

7
推荐指数
2
解决办法
2608
查看次数

单击事件时清除 QLineEdit

我正在使用给定的代码,我希望用户在 QLineEdit 小部件中输入文本,按复制!按钮并查看输入的文本替换“N/A”标签。我的问题是:按照此过程,如何通过简单的鼠标单击清除 QLineEdit 小部件中输入的文本?

从我读到的(this、this和this)来看,我似乎需要在扩展 QLineEdit 的新类中重新实现 focusInEvent()。我的问题是我的 GUI 代码是使用 pyuic5 从 Qt Designer 导入的,上面引用的示例似乎没有考虑到这一点。

这是我的代码:

from PyQt5.QtWidgets import *
import sys

import QLineEdit_test


class MainWindow(QMainWindow, QLineEdit_test.Ui_QLineEdit_test):

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)

        self.copy_button.clicked.connect(self.copy_and_print)

    def copy_and_print(self):

        self.label.setText(self.lineEdit.text())


def main():

    app = QApplication(sys.argv)
    form = MainWindow()
    form.show()
    app.exec_()

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

这是我转换后的 .ui 文件:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_QLineEdit_test(object):
    def setupUi(self, QLineEdit_test):
        QLineEdit_test.setObjectName("QLineEdit_test")
        QLineEdit_test.resize(300, 200)
        QLineEdit_test.setMaximumSize(QtCore.QSize(300, 200))
        self.centralwidget = …
Run Code Online (Sandbox Code Playgroud)

python pyqt qt-designer python-3.x pyqt5

7
推荐指数
1
解决办法
2万
查看次数

尝试多处理时无法腌制本地对象

I\xc2\xb4m 尝试对网站进行多处理抓取,在其中我获取要从中获取信息的所有节点的列表,然后生成一个池,这样它就不会并行地逐一获取数据。我的代码如下:

\n\n
from selenium import webdriver\nfrom selenium.webdriver.common.by import By\nfrom selenium.webdriver.support.ui import WebDriverWait\nfrom selenium.webdriver.support import expected_conditions as EC\nimport multiprocessing\n\ndef ResPartido(node):\n\n   ft=node.find_element_by_css_selector(\'.status\').text\n   if ft.strip()!=\'FT\': return\n   hora=node.find_element_by_css_selector(\'.time\').text\n   names=list()\n   for nam in node.find_elements_by_xpath(\n            \'.//td[contains(@style,"text-align")]/a[contains(@id,"team")]\'):\n     name=nam.text\n     if \'(N)\' in name:\n        name=name.split(\'(N)\')[0]\n     names.append(name)\n   score=node.find_element_by_css_selector(\'.red\')\n\n   return [hora,name,score.text]\n\nif __name__ == "__main__":\n\n   browser=webdriver.Chrome()\n   SOME CODE\n   nodes=browser.find_elements_by_xpath(\n        \'//tr[contains(@align,"center")]/following-sibling::tr[.//div[contains(@class,"toolimg")]]\')\n   p = multiprocessing.Pool()\n\n   p.map(ResPartido,nodes)   <---Here is the error\n   .......\n\n   >>AttributeError: Can\'t pickle local object \'_createenviron.<locals>.encodekey\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的 python 终端出现错误的图像

\n\n

\n\n

检查文档,它说列表是可选择的对象,并且在主函数之前声明的函数也是如此,所以我不\xc2\xb4t明白使用多处理时我做错了什么。

\n

python pickle multiprocessing

7
推荐指数
1
解决办法
8523
查看次数

在ListView QML中隐藏项(委托)

有没有办法在ListView中的某个事件上隐藏特定项?

到目前为止,我可以通过设置做到这一点visible,以false和height为代表的零.

但是,如果我将listView中的间距设置为2,例如,此解决方案似乎已被破坏.

在此输入图像描述

qt qml

7
推荐指数
1
解决办法
475
查看次数

将 QHBoxLayout 的每个小部件对齐到顶部

我试图将 QHBoxlayout 中的每个小部件对齐到顶部,但我得到的是每个小部件似乎都居中。我认为这是由于尺寸不同造成的。

例如:

from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys



class SurfViewer(QMainWindow):
    def __init__(self, parent=None):
        super(SurfViewer, self).__init__()
        self.parent = parent
        self.setFixedWidth(300)
        self.setFixedHeight(100)

        self.wid = QWidget()
        self.setCentralWidget(self.wid)

        self.groups = QHBoxLayout()

        l_a1 = QLabel('A')
        a = QVBoxLayout()
        a.addWidget(l_a1)
        self.groups.addLayout(a)

        l_a2 = QLabel('A')
        l_b2 = QLabel('B')
        a_b = QVBoxLayout()
        a_b.addWidget(l_a2)
        a_b.addWidget(l_b2)
        self.groups.addLayout(a_b)


        l_a3 = QLabel('A')
        l_b3 = QLabel('B')
        l_c3 = QLabel('C')
        a_b_c = QVBoxLayout()
        a_b_c.addWidget(l_a3)
        a_b_c.addWidget(l_b3)
        a_b_c.addWidget(l_c3)
        self.groups.addLayout(a_b_c)

        self.groups.setAlignment(Qt.AlignTop)


        self.wid.setLayout(self.groups)


if __name__ == '__main__':
    app …
Run Code Online (Sandbox Code Playgroud)

python pyqt alignment pyqt5 qlayout

7
推荐指数
1
解决办法
1万
查看次数

类型错误:预期的 str、bytes 或 os.PathLike 对象,而不是 None 类型

我正在尝试在 Pycharm 中运行此代码,但出现以下错误:

TypeError: expected str, bytes or os.PathLike object, not NoneType
Run Code Online (Sandbox Code Playgroud)

这适用于 Windows 10,在 Pycharm 上运行,python 3.7

import os
import time
file_path = os.path.join(os.getenv("HOME"), "birth_day_lookup.txt")


def check_birthday():

    lookup_file = open(file_path, 'r')
    today = time.strftime('%d-%B')
    flag = 0
    for entry in lookup_file:
        if today in entry:
            line = entry.split(' ')
            flag = 1
            os.system('notify-send "Today is '+line[1]+' '+line[2]+'\'s Birthday"')
    if flag == 0:
        os.system('notify-send "No birthday for today is listed"')

check_birthday()
Run Code Online (Sandbox Code Playgroud)

python python-3.x

7
推荐指数
1
解决办法
3万
查看次数

在抽象类方法的具体实现中检查 **kwargs。接口问题?

我正在尝试实现 Strategy 设计模式,以便为以模块化方式实现的底层算法创建一个接口。

目前,根据下面的代码,我有一个顶级/父抽象类 ( ParentAbstractStrategy),它定义了该strategy方法的基本接口。

我也有一个从这个抽象类 ( ChildAbstractStrategy)向下一级。

我有两个抽象类的原因是因为它们需要保存的属性;见__init__方法。 ChildAbstractStrategy是一种特殊情况,ParentAbstractStrategy因为它存储了一个附加属性:attr2。否则它的接口是相同的,如相同的strategy方法签名所见。

有时,我希望能够直接子类化ParentAbstractStrategy并实现strategy方法(请参阅ConcreteStrategyA),但有时我希望能够子类化ChildAbstractStrategy,因为需要额外的属性(请参阅ConcreteStrategyB)。

另一个复杂问题是,在任一抽象类的某些子类中,我希望能够处理strategy方法中的其他参数。这就是为什么我添加**kwargs到该strategy方法的所有签名中的原因,以便我可以根据具体情况将我想要的任何其他参数传递给子类。

这就产生了最后一个问题:这些额外的参数在子类中不是可选的。例如,在strategy方法ConcreteStrategyB我想肯定的是,来电者在第三个参数传递。我基本上是在滥用**kwargs提供可能应该是位置参数的内容(因为我不能给它们合理的默认值并且需要强制执行它们的存在)。

这种**kwargs在子类中用于“方法重载”的当前解决方案感觉非常混乱,我不确定这是否意味着类继承方案或接口设计存在问题,或两者兼而有之。

有没有办法以更简洁的方式实现这些设计目标。感觉就像我在这里错过了一些大图,也许类/界面设计很糟糕。也许为该strategy方法创建两个具有不同签名的不相交抽象类?

import abc


class ParentAbstractStrategy(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def __init__(self, attr1):
        self.attr1 = attr1

    @abc.abstractmethod
    def strategy(self, arg1, arg2, **kwargs):
        raise NotImplementedError


class ChildAbstractStrategy(ParentAbstractStrategy, metaclass=abc.ABCMeta):
    @abc.abstractmethod …
Run Code Online (Sandbox Code Playgroud)

python abstract-class strategy-pattern keyword-argument python-3.x

7
推荐指数
1
解决办法
1805
查看次数

在创建 QCoreApplication 之前必须设置属性 Qt::AA_UseSoftwareOpenGL

所以我的环境是:

  • Windows 10,更新至 2019-11-08
  • 通过 miniconda 安装 Python 3.6、Spyder 4
  • 运行 miniconda shell
  • 激活虚拟环境
  • 运行 Spyder

我得到以下信息(在 shell 中):

(base) C:\Users\bbate>activate keras-gpu  
(keras-gpu) C:\Users\bbate>spyder  
Attribute Qt::AA_UseSoftwareOpenGL must be set before QCoreApplication is created.  
[968:13624:1108/111945.157:ERROR:permission_manager_qt.cpp(82)] NOT IMPLEMENTEDUnsupported permission type: 13  
Run Code Online (Sandbox Code Playgroud)

然而,Spyder4 启动并工作,但它时不时地挂起,我看到其他注释表明它与 qt dll 有关,但我不知道如何解决这个问题

我看过各种帖子,但没有解决这个错误

顺便说一句,这是一个“干净”的安装;驱动器刚刚重建,所有东西都是全新安装的,所以周围没有太多杂乱,其他版本等。

python spyder miniconda

7
推荐指数
1
解决办法
2764
查看次数

PyQt5 和 Asyncio

是否可以让 UDP 服务器作为异步函数运行,接收数据,然后将其传递给也作为异步函数运行的 (PyQt5) 小部件?

这个想法是,当进入服务器的数据更新时,它也会更新小部件。

我已经有一个简单的 UDP 服务器和一个(PyQt5)小部件,它们独立工作正常,但我正在努力尝试将它们组合起来并保持它们异步运行并交换数据(服务器将数据传输到小部件)

[更新]

下面是我正在尝试的一个小部件

import sys
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtWidgets import QApplication, QMainWindow
import asyncio


class Speedometer(QMainWindow):

    angleChanged = QtCore.pyqtSignal(float)

    def __init__(self, parent = None):

        QtWidgets.QWidget.__init__(self, parent)

        self._angle = 0.0

        self._margins = 20

        self._pointText = {0: "40", 30: "50", 60: "60", 90: "70", 120: "80",
                           150:"" , 180: "", 210: "",
                          240: "0", 270: "10", 300: "20", 330: "30", 360: ""}
    def paintEvent(self, event):

        painter = QtGui.QPainter()
        painter.begin(self)
        painter.setRenderHint(QtGui.QPainter.Antialiasing) …
Run Code Online (Sandbox Code Playgroud)

python pyqt coroutine pyqt5 python-asyncio

7
推荐指数
1
解决办法
1万
查看次数