RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-388432

Guamokolatokint's questions

Martin Hope
Guamokolatokint
Asked: 2024-10-02 18:53:11 +0000 UTC

Python通过锯齿形将列表转换为矩阵

  • 6

请告诉我,如何使用锯齿形将列表转换为矩阵?相反,有代码以锯齿形方式将矩阵转换为列表:

def zigzag(a):

    m, n = a.shape
    solution = [[] for i in range(m + n - 1)]

    for i in range(m):
        for j in range(n):
            sum = i + j
            value = a[i][j]
            index = (i, j)
            if sum % 2 == 0:
                solution[sum].insert(0, (value, index))
            else:
                solution[sum].append((value, index))

    output_vector = []
    for i in solution:
        for j in i:
            output_vector.append(j[0])

    return output_vector
python
  • 1 个回答
  • 56 Views
Martin Hope
Guamokolatokint
Asked: 2023-10-25 20:50:57 +0000 UTC

Python从字符串中获取多个子字符串

  • 4

有一条线

Free space "974.62MB" in the Storage[/home/doom] has dropped  below the recommended threshold "5GB", it is recommended to free up space in the storage as soon as possible

您需要从此字符串中获取引号和括号中的数据。即:974.62MB,/home/doom,5GB。我怎样才能做到这一点?

python
  • 1 个回答
  • 48 Views
Martin Hope
Guamokolatokint
Asked: 2023-09-22 19:27:23 +0000 UTC

Python 日期和时间的区别

  • 6

我正在编写确定时间差异的代码。两个物体之间的时间不应少于30分钟。

tdelta1= datetime.timedelta(hours=time_object.hour, minutes=time_object.minute)
tdelta2 = datetime.timedelta(hours=i.backup_time.hour, minutes=i.backup_time.minute)
res=tdelta1-tdelta2
res_to_min = res.total_seconds() / 60
if res_to_min <30:
    #do something
else:
    #do something else

所有这些都有效,除了一个时刻,第一次是当天的 23:59,第二次是第二天的 00:00。这样一来,结果就超过了30分钟。如何修复它?

python
  • 1 个回答
  • 32 Views
Martin Hope
Guamokolatokint
Asked: 2023-04-18 20:56:22 +0000 UTC

Python调度器添加任务

  • 5

一个任务会在不同的执行时间从 web 表单抛出到服务器。

但问题是,在第一个任务开始时,第二个任务没有开始。

代码示例(字典 d 作为示例输入给出):

def test_run_func_schedule(data):
    print('test_run_func_schedule:',data)



def test_send_func_schedule(data):
    d= {'vm1': 2, 'vm2': 4, 'vm3': 8}

    for k,v in d.items():
        schedule.every(v).seconds.do(lambda: test_run_func_schedule(k)).tag('second-tasks', 'VM_'+k)
        while 1:
            schedule.run_pending()
            time.sleep(1)

只有 vm1 输出到控制台。其余不显示。如何使其余的任务也被执行?

python
  • 2 个回答
  • 33 Views
Martin Hope
Guamokolatokint
Asked: 2022-12-29 23:05:55 +0000 UTC

Linux 在 LVM 中调整文件系统大小

  • 5
[root@host2 etc]# df -hT
Filesystem                   Type      Size  Used Avail Use% Mounted on
devtmpfs                     devtmpfs  4.8G     0  4.8G   0% /dev
tmpfs                        tmpfs     4.9G  4.0K  4.9G   1% /dev/shm
tmpfs                        tmpfs     4.9G   18M  4.9G   1% /run
tmpfs                        tmpfs     4.9G     0  4.9G   0% /sys/fs/cgroup
/dev/mapper/almalinux-root   xfs        70G   17G   54G  23% /
/dev/mapper/almalinux-home   xfs        94G  803M   93G   1% /home
/dev/sda1                    xfs      1014M  264M  751M  26% /boot
tmpfs                        tmpfs     989M   36K  989M   1% /run/user/1000
192.168.203.129:/data/engine nfs4       70G   17G   54G  23% /rhev/data-center/mnt/192.168.203.129:_data_engine

[root@host2 etc]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                  8:0    0  171G  0 disk 
├─sda1               8:1    0    1G  0 part /boot
└─sda2               8:2    0  170G  0 part 
├─almalinux-root 253:0    0   70G  0 lvm  /
├─almalinux-swap 253:1    0  6.7G  0 lvm  [SWAP]
└─almalinux-home 253:2    0 93.3G  0 lvm  /home
sr0                 11:0    1 1024M  0 rom  


[root@host2 etc]# fdisk -l
Disk /dev/sda: 171 GiB, 183609851904 bytes, 358612992 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0f8a62c3

Device     Boot   Start       End   Sectors  Size Id Type
/dev/sda1  *       2048   2099199   2097152    1G 83 Linux
/dev/sda2       2099200 358612991 356513792  170G 8e Linux LVM


Disk /dev/mapper/almalinux-root: 70 GiB, 75161927680 bytes, 
 146800640 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/almalinux-swap: 6.7 GiB, 7218397184 bytes, 
14098432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/almalinux-home: 93.3 GiB, 100151590912 bytes, 
195608576 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

您需要从 /dev/mapper/almalinux-home 中“撕下”50 个 gig,并将它们附加到 192.168.203.129:/data/engine 如何做到这一点?

所有这些都在一台虚拟机上运行。192.168.203.129:/data/engine 不是远程驱动器。全部在一张磁盘上。

linux
  • 1 个回答
  • 21 Views
Martin Hope
Guamokolatokint
Asked: 2022-09-11 22:58:16 +0000 UTC

打开端口 5000

  • 0

您需要在 CentOS 中打开 5000 端口。

将端口 5000 添加到文件中

/etc/services
testport        5000/tcp   # Application Name

添加到防火墙

firewall-cmd --zone=public --add-port=5000/tcp --permanent
firewall-cmd --reload

但是他还是不行。团队

netstat -na |grep 5000

不显示

linux
  • 0 个回答
  • 0 Views
Martin Hope
Guamokolatokint
Asked: 2022-08-20 01:00:16 +0000 UTC

将数据结构转换为 Javascript

  • 0

有一个数据结构,内容如下

var data = {"disk_name":["new","my"],"luks_uuid":["ec06935d-a72a-460a-aaba-205b58a53c01","87be6eca-e043-4139-b637-f91229631d29"],"uuid_disk":["58fbc706-d1ef-4922-8cf6-9078a7fa64cf","6708c974-158f-438a-9518-3225cecc9c0c"]}

需要转换成以下

list = [
{"disk_name":"new","luks_uuid":"ec06935d-a72a-460a-aaba-205b58a53c01","uuid_disk":"58fbc706-d1ef-4922-8cf6-9078a7fa64cf"},
{"disk_name":"my","luks_uuid":"87be6eca-e043-4139-b637-f91229631d29","uuid_disk":"6708c974-158f-438a-9518-3225cecc9c0c"}
]

我不知道如何正确地遍历这个 json 来组装这样一个结构。我寻求帮助

javascript json
  • 1 个回答
  • 23 Views
Martin Hope
Guamokolatokint
Asked: 2022-08-04 22:11:05 +0000 UTC

Python Flask CORS 问题

  • 0

处理请求时出错

来自外部的请求被阻止:单一来源策略禁止读取 https://my.server.name:5000/postmethod处的远程资源。(原因:CORS 请求失败)。状态码:(空)。

服务器代码

import socket
from flask import Flask,render_template,request,jsonify
from flask_cors import CORS
host = socket.gethostname()
app = Flask(__name__)
CORS(app)

@app.route('/postmethod', methods=['POST'])

def get_post_javascript_data():
    data = request.get_json()
    data = jsonify(data)
    data.headers.add('Access-Control-Allow-Origin','*')
    return data

if __name__ == "__main__":
    app.run(host=host,ssl_context='adhoc')

javascript代码

 $.post( "https://my.server.name:5000/postmethod", {
        encryption: JSON.stringify(value_post)});

如果我在浏览器中访问https://my.server.name:5000/postmethod,则会收到安全风险错误。错误代码:SEC_ERROR_UNKNOWN_ISSUER。单击“接受风险并继续”。并且只有在请求正常发送之后。如何解决?

javascript python
  • 1 个回答
  • 88 Views
Martin Hope
Guamokolatokint
Asked: 2022-07-01 16:29:19 +0000 UTC

PySide2 选项卡大小

  • 1

如何使标签按钮更大?

图像中的示例(组分和混合物选项卡)

在此处输入图像描述

现在获得了通常的标准选项卡。下面的代码

UI_app2.py

from PySide2 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
    self.tabWidget = QtWidgets.QTabWidget()
    self.tabWidget.setLayoutDirection(QtCore.Qt.LeftToRight)
    self.tabWidget.setMinimumSize(600, 420)
    self.tabWidget.setAutoFillBackground(True)
    self.tabWidget.setObjectName("tabWidget")

    self.tab1 = QtWidgets.QWidget()
    self.tab1.setObjectName("tab1")
    self.tabWidget.addTab(self.tab1, "tab1")

    self.tab2 = QtWidgets.QWidget()
    self.tab2.setObjectName("tab2")
    self.tabWidget.addTab(self.tab2, "tab2")

    self.grid_main = QtWidgets.QGridLayout(Form)
    self.grid_main.addWidget(self.tabWidget)
    Form.setLayout(self.grid_main)

应用程序2.py

from PySide2 import QtWidgets, QtGui, QtCore
from UI_app2 import Ui_Form
import sys

class MyWindow(QtWidgets.QWidget, Ui_Form):
    def __init__(self):
        super().__init__()
        self.setupUi(self)


    

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    app.setStyle('Windows')
    window.show()
    sys.exit(app.exec_())
python-3.x
  • 1 个回答
  • 10 Views
Martin Hope
Guamokolatokint
Asked: 2022-05-14 14:37:36 +0000 UTC

Apache NIFI 无法在 Ubuntu 上启动

  • 0

在 Ubuntu 上运行 NiFi

./nifi.sh start

控制台输出

Java home: /usr/lib/jvm/java-11-openjdk-amd64
NiFi home: /home/user/nifi-1.15.0

Bootstrap Config File: /home/user/nifi-1.15.0/conf/bootstrap.conf

我去 http://localhost:8080/nifi,但它说我无法访问该站点。

状态输出

user@user-System-Product-Name:~/nifi-1.15.0/bin$ ./nifi.sh status

Java home: /usr/lib/jvm/java-11-openjdk-amd64
NiFi home: /home/user/nifi-1.15.0

Bootstrap Config File: /home/user/nifi-1.15.0/conf/bootstrap.conf

2021-12-14 09:29:09,686 INFO [main] org.apache.nifi.bootstrap.Command Apache NiFi is 
currently running, listening to Bootstrap on port 45971, PID=53923

从 nifi-app.log 记录

2021-12-14 10:15:57,028 INFO [main] 
o.e.jetty.server.handler.ContextHandler Started 
o.e.j.w.WebAppContext@4ced17f3{nifi-api,/nifi- 
api,file:///home/user/nifi-1.15.0/work/jetty/nifi-web-api- 
1.15.0.war/webapp/,AVAILABLE}{./work/nar/extensions/nifi-server- 
nar-1.15.0.nar-unpacked/NAR-INF/bundled-dependencies/nifi-web- 
api-1.15.0.war}
2021-12-14 10:15:57,268 INFO [main] 
o.e.j.a.AnnotationConfiguration Scanning elapsed time=81ms
2021-12-14 10:15:57,309 INFO [main] 
o.e.j.s.h.C._nifi_content_viewer No Spring 
WebApplicationInitializer types detected on classpath
2021-12-14 10:15:57,314 INFO [main] 
o.e.jetty.server.handler.ContextHandler Started 
o.e.j.w.WebAppContext@734a149a{nifi-content-viewer,/nifi-content- 
viewer,file:///home/user/nifi-1.15.0/work/jetty/nifi-web-content- 
viewer-1.15.0.war/webapp/,AVAILABLE}{./work/nar/extensions/nifi- 
server-nar-1.15.0.nar-unpacked/NAR-INF/bundled-dependencies/nifi- 
web-content-viewer-1.15.0.war}
2021-12-14 10:15:57,333 INFO [main] 
o.e.j.a.AnnotationConfiguration Scanning elapsed time=5ms
2021-12-14 10:15:57,334 WARN [main] 
o.e.j.webapp.StandardDescriptorProcessor Duplicate mapping from / 
to default
2021-12-14 10:15:57,335 INFO [main] 
o.e.j.s.h.ContextHandler._nifi_docs No Spring 
WebApplicationInitializer types detected on classpath
2021-12-14 10:15:57,370 INFO [main] 
o.e.jetty.server.handler.ContextHandler Started 
o.e.j.w.WebAppContext@6ce9771c{nifi-docs,/nifi- 
docs,file:///home/user/nifi-1.15.0/work/jetty/nifi-web-docs- 
1.15.0.war/webapp/,AVAILABLE}{./work/nar/extensions/nifi-server- 
nar-1.15.0.nar-unpacked/NAR-INF/bundled-dependencies/nifi-web- 
docs-1.15.0.war}
2021-12-14 10:15:57,416 INFO [main] 
o.e.j.a.AnnotationConfiguration Scanning elapsed time=33ms
2021-12-14 10:15:57,417 INFO [main] 
o.e.j.server.handler.ContextHandler._ No Spring 
WebApplicationInitializer types detected on classpath
2021-12-14 10:15:57,448 INFO [main] 
o.e.jetty.server.handler.ContextHandler Started 
o.e.j.w.WebAppContext@4a9b92c6{nifi- 
error,/,file:///home/user/nifi-1.15.0/work/jetty/nifi-web-error- 
1.15.0.war/webapp/,AVAILABLE}{./work/nar/extensions/nifi-server- 
nar-1.15.0.nar-unpacked/NAR-INF/bundled-dependencies/nifi-web- 
error-1.15.0.war}
2021-12-14 10:15:57,652 INFO [main] 
o.eclipse.jetty.server.AbstractConnector Started 
ServerConnector@38732372{SSL, (ssl, http/1.1)}{127.0.0.1:8443}
2021-12-14 10:15:57,652 INFO [main] 
org.eclipse.jetty.server.Server Started @24325ms
2021-12-14 10:15:57,682 INFO [main] 
org.apache.nifi.nar.NarAutoLoader Starting NAR Auto-Loader for 
directory ./extensions ...
2021-12-14 10:15:57,683 INFO [main] 
org.apache.nifi.web.server.JettyServer NiFi has started. The UI 
is available at the following URLs:
2021-12-14 10:15:57,684 INFO [main] 
org.apache.nifi.web.server.JettyServer 
https://127.0.0.1:8443/nifi
2021-12-14 10:15:57,684 INFO [main] 
org.apache.nifi.BootstrapListener Successfully initiated 
communication with Bootstrap
2021-12-14 10:15:57,685 INFO [main] org.apache.nifi.NiFi 
Controller initialization took 12136429891 nanoseconds ( 12  
seconds).
2021-12-14 10:16:14,358 INFO [pool-9-thread-1] 
o.a.n.c.r.WriteAheadFlowFileRepository Initiating checkpoint of 
FlowFile Repository
2021-12-14 10:16:14,359 INFO [pool-9-thread-1] 
o.a.n.c.r.WriteAheadFlowFileRepository Successfully checkpointed 
FlowFile Repository with 0 records in 0 milliseconds
ubuntu
  • 1 个回答
  • 10 Views
Martin Hope
Guamokolatokint
Asked: 2022-09-14 00:33:30 +0000 UTC

硒测试未找到元素

  • 0

测试资源https://auth.aragorn.xyz/sign-in

编码

from selenium import webdriver

driver = webdriver.Firefox(executable_path="drivers/geckodriver")
driver.get("https://auth.aragorn.xyz/sign-in")
elem_push = driver.find_element_by_id("email")

链接打开,一切正常。但它没有找到任何元素。没有按钮,没有字段。代码中有元素 ID。问题是什么?

python
  • 2 个回答
  • 10 Views
Martin Hope
Guamokolatokint
Asked: 2022-07-20 15:35:09 +0000 UTC

Python地址比较

  • 0

试图弄清楚如何比较字符串示例字符串

1. г. Москва, вн.тер.г. муниципальный округ Тверской, ул Кузнецкий Мост, д. 4/3, стр. 1, этаж МАНСАРДНЫЙ, ПОМ. I, ком. 413
2. г. Москва Тверской ул Кузнецкий Мост д. 4/3 стр. 1

3. 105005 г. Москва 2-я Бауманская ул. 5 стр. 1
4. 105005 г. Москва ул. Радио д. 20

如您所见,第 1 行和第 2 行包含基本相同的地址。第 3 行和第 4 行不同。我不知道如何让程序显示地址 1 和 2 相同。我什至不知道从哪里开始......

python
  • 1 个回答
  • 10 Views
Martin Hope
Guamokolatokint
Asked: 2022-07-16 17:06:15 +0000 UTC

在 Python 中使用地址更改字符串

  • 1

地址示例

г. Москва, пл. Спартаковская, д.  14 стр.  3 этаж / ком. / офис  2/9/108
г. Москва, ул. 14-Я Парковая, д.  8 офис  144
г. Москва, проезд Строительный, д.  7А корп.  28 этаж  2, ком. 223
г. Москва, ул. Фрязевская, д.  10 стр. 2 этаж  4 пом. XXI ком. 8
г. Москва, ул. Студенческая, д.  20 кв.  18
г. Москва, проспект Мира, д.  70 этаж  1А П III К 3 офис 10
г. Москва, пер. Луков, д.  4 этаж  ПОДВ пом. I ком. 8 РМ4Б
г. Москва, ул. Нагорная, д.  5 к.  4 этаж  1 ком. 11 офис 48
г. Москва, шоссе Энтузиастов, д.  56 стр.  32 пом.  329
г. Москва, ул. 3-Я Хорошёвская, д.  2 стр.  1 Э 3 П 21 К2 офис 5
г. Москва, набережная Бережковская, д.  20 стр.  5 пом.  I ком. 3
г. Москва, вн.тер.г. муниципальный округ Старое Крюково, г Зеленоград, к. 903, кв. 327

从地址中我只需要获取城市、街道名称、门牌号。没有楼层、办公室、公寓等。那是

г. Москва, пл. Спартаковская, д.  14 стр.  3
г. Москва, ул. 14-Я Парковая, д.  8
г. Москва, проезд Строительный, д.  7А корп.  28
г. Москва, ул. Фрязевская, д.  10 стр. 2
г. Москва, ул. Студенческая, д.  20
г. Москва, проспект Мира, д.  70
г. Москва, пер. Луков, д.  4
г. Москва, проспект Рязанский, д.  86/1 стр.  1
г. Москва, проезд Электролитный, д.  1 корп.  3

我没有任何代码示例,因为 我什至不知道从哪里开始。帮助请

python
  • 1 个回答
  • 10 Views
Martin Hope
Guamokolatokint
Asked: 2022-07-02 22:03:20 +0000 UTC

构建 deb 包

  • 1

我有一个 python 项目。我想用它制作一个 deb 包以安装在其他计算机上。创建了一个 setup.py 文件和一个包含以下文件的 debian 文件夹:changelog、compat、control、copyright、rules。

我运行命令

dpkg-buildpackage -b

给出错误信息

dpkg-buildpackage: info: source package hsi
dpkg-buildpackage: info: source version 1.0
dpkg-buildpackage: info: source distribution UNRELEASED
dpkg-buildpackage: info: source changed by argus <argus@argus>
dpkg-buildpackage: info: host architecture amd64
dpkg-source --before-build .
fakeroot debian/rules clean
dh clean --with python3 --buildsystem=pybuild
Use of uninitialized value $v in substitution (s///) at  /usr/share/perl5/Debian/Debhelper/Dh_Lib.pm line 1729, <$fd> line 7.
Use of uninitialized value $v in substitution (s///) at /usr/share/perl5/Debian/Debhelper/Dh_Lib.pm line 1730, <$fd> line 7.
 dh_auto_clean -O--buildsystem=pybuild
Use of uninitialized value $v in substitution (s///) at /usr/share/perl5/Debian/Debhelper/Dh_Lib.pm line 1729, <$fd> line 7.
Use of uninitialized value $v in substitution (s///) at /usr/share/perl5/Debian/Debhelper/Dh_Lib.pm line 1730, <$fd> line 7.
E: Please add appropriate interpreter package to Build-Depends,  see pybuild(1) for details.this: $VAR1 = bless( {
             'pyvers' => '',
             'pypydef' => '',
             'parallel' => '4',
             'cwd' => '/home/argus/pack',
             'builddir' => undef,
             'sourcedir' => '.',
             'pydef' => '',
             'py3vers' => '3.9',
             'py3def' => '3.9'
           }, 'Debian::Debhelper::Buildsystem::pybuild' );
deps: $VAR1 = [];
make: *** [debian/rules:4: clean] Error 25
dpkg-buildpackage: error: fakeroot debian/rules clean subprocess     returned exit status 2

规则文件的内容

#!/usr/bin/make -f

%:
    dh $@ --with python3 --buildsystem=pybuild

控制文件的内容

Source: hsi
Maintainer: Developer
Build-Depends: debhelper (>=10)

Package: hsi
Architecture: all

我无法弄清楚错误在哪里?

python
  • 1 个回答
  • 10 Views
Martin Hope
Guamokolatokint
Asked: 2022-06-04 18:54:15 +0000 UTC

缩放时,鼠标单击时图形的图像放置在错误的位置

  • 4

我举一个小应用程序的例子。它显示您要在其上绘制形状的图像。如果你不放大图像,那么一切都很好。但是当图像被放大时,图形被放置在错误的位置。

在此示例中,单击图像会放置一个点。如果您不更改缩放比例,那么一切正常。如果放大,则该点不会放置在鼠标光标所在的位置,而是更远。无法弄清楚如何解决这个问题。我还附上了一张 512x512 的图片。比例随鼠标滚轮而变化。

UI_test.py

from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import Qt
from random import randint

class Ui_Form(object):
    def setupUi(self, Form):
        Form.resize(1300, 700)
        self.layout = QtWidgets.QHBoxLayout()
        self.layout.setContentsMargins(0, 0, 0, 0)
        self.listWidget = QtWidgets.QListWidget()
        self.layout.addWidget(self.listWidget)
        self.stackedWidget = QtWidgets.QStackedWidget()
        self.layout.addWidget(self.stackedWidget)
        self.listWidget.currentRowChanged.connect(
            self.stackedWidget.setCurrentIndex)

        item1 = QtWidgets.QListWidgetItem(QtGui.QIcon('icons/settings.png'),'CamSettings', self.listWidget)
        item2 = QtWidgets.QListWidgetItem(QtGui.QIcon('icons/explore.png'),'Explore', self.listWidget)

        item1.setSizeHint(QtCore.QSize(10, 60))
        item2.setSizeHint(QtCore.QSize(10, 60))

        item1.setTextAlignment(QtCore.Qt.AlignCenter)
        item2.setTextAlignment(QtCore.Qt.AlignCenter)

        label1 = QtWidgets.QLabel('Это страница 1')
        label2= QtWidgets.QLabel('Это страница 2')
        label1.setAlignment(QtCore.Qt.AlignCenter)
        label2.setAlignment(QtCore.Qt.AlignCenter)
        label1.setStyleSheet('background: rgb(%d, %d, %d); margin: 50px;' % (
            randint(0, 255), randint(0, 255), randint(0, 255)))
        label2.setStyleSheet('background: rgb(%d, %d, %d); margin: 50px;' % (
            randint(0, 255), randint(0, 255), randint(0, 255)))

        self.img_rgb = QtWidgets.QGraphicsScene()
        self.view_rgb = QtWidgets.QGraphicsView()
        self.view_rgb.setScene(self.img_rgb )
        pixmap_rgb = QtGui.QPixmap()
        self.img_rgb.addPixmap('pic.png')
        border_style_rgb = f'border-style: solid; border-width: 2px;  background-color:#757575;'
        self.view_rgb.setStyleSheet(border_style_rgb)
        self.view_rgb.setFixedSize(520,520)
        self.view_rgb.mousePressEvent = Form.press_event
        #self.view_rgb.mouseMoveEvent = Form.move_event
        #self.view_rgb.mouseReleaseEvent = Form.release_event
        self.view_rgb.wheelEvent = Form.wheel_event

        first_panel_left = QtWidgets.QVBoxLayout()
        first_panel_left.setAlignment(Qt.AlignTop)
        first_panel_frame_left = QtWidgets.QFrame()
        first_panel_frame_left.setMinimumWidth(200)
        first_panel_frame_left.setLayout(first_panel_left)
        first_panel_right = QtWidgets.QVBoxLayout()
        first_panel_right.addWidget(self.view_rgb)
        first_panel_right.addStretch()
        first_panel_frame_right = QtWidgets.QFrame()
        first_panel_frame_right.setLayout(first_panel_right)
        main_first_box = QtWidgets.QHBoxLayout()
        main_first_box.addWidget(first_panel_frame_left)
        main_first_box.addWidget(first_panel_frame_right)
        first_container = QtWidgets.QWidget()
        first_container.setLayout(main_first_box)
        self.stackedWidget.addWidget(first_container)
        self.stackedWidget.addWidget(label2)
        Form.setLayout(self.layout)

应用程序.py

import sys
from PySide2 import QtWidgets
from UI_test import Ui_Form
from PySide2 import QtWidgets, QtGui, QtCore
from tools import DotPainter

class App(QtWidgets.QWidget):
    def __init__(self, parent = None):
        QtWidgets.QWidget.__init__(self, parent)
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self._zoom = 0

    def press_event(self, event):
        self.clickPos = event.pos()
        self.clickBtn= event.button()
        print(self.clickPos)
        if self.clickBtn & QtCore.Qt.LeftButton:
            self.pointItem=DotPainter(self.ui.img_rgb,self.clickPos)

    def fitInView(self):
        rect = QtCore.QRectF(0.0, 0.0, 512.0, 512.0)
        if not rect.isNull():
            self.ui.view_rgb.setSceneRect(rect)
            unity = self.ui.view_rgb.transform().mapRect(QtCore.QRectF(0, 0, 1, 1))
            self.ui.view_rgb.scale(1 / unity.width(), 1 / unity.height())
            viewrect = self.ui.view_rgb.viewport().rect()
            scenerect = self.ui.view_rgb.transform().mapRect(rect)
            factor = min(viewrect.width() / scenerect.width(),
                        viewrect.height() / scenerect.height())
            self.ui.view_rgb.scale(factor, factor)
            self._zoom = 0

    def wheel_event(self,event):
        if event.angleDelta().y() > 0:
            factor = 1.25
            self._zoom += 1
        else:
            factor = 0.8
            self._zoom -= 1
        if self._zoom > 0:
            self.ui.view_rgb.scale(factor, factor)
        elif self._zoom == 0:
            self.fitInView()
        else:
            self._zoom = 0


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

工具.py

from PySide2.QtCore import Qt,QRectF,QPointF,QSizeF
from PySide2.QtGui import QPen,QColor,QBrush,QPolygonF
from PySide2 import QtWidgets, QtGui, QtCore


class DotPainter(object):
    #класс для рисования точки
    def __init__(self, canvas, start):
        self.start = start
        self.canvas = canvas
        self.point=QRectF()
        self.width = self.point.width()
        self.height = self.point.height()
        self.PointF = QPointF(float(start.x()), float(start.y()))
        self.point.setTopLeft(self.PointF)
        self.point.setSize(QSizeF(8, 8))
        self.linePen = QPen(QtGui.QColor(255,0,0), 2)
        self.areaBrush = QBrush(QColor(255,0,0))
        self.pointItem=self.canvas.addRect(self.point,
                                              self.linePen,self.areaBrush)
    def mouseReleaseEvent(self, event):
        #функция события мыши для получения размеров точки
        self.width = self.point.width()
        self.height = self.point.height()

在此处输入图像描述

python
  • 1 个回答
  • 10 Views
Martin Hope
Guamokolatokint
Asked: 2022-06-02 14:32:18 +0000 UTC

QTableWidget 中的上下文菜单

  • 1

在GUI中,当您右键单击表时,контекстное меню. 但问题是,之后这个上下文菜单不仅可以在表格中调用,还可以在表格之外的应用程序窗口中的任何位置调用QTableWidget。

如何解决?
我需要调用特定表上的特定菜单。而别处。

这是一个简单的GUI示例,其中清楚地重现了错误:

应用程序.py

import sys
from PySide2 import QtWidgets
from UI_test import Ui_Form
from PySide2 import QtWidgets, QtGui, QtCore

class App(QtWidgets.QWidget):
    def __init__(self, parent = None):
        QtWidgets.QWidget.__init__(self, parent)
        self.ui = Ui_Form()
        self.ui.setupUi(self)

    def contextMenuEvent(self,e):
        #создание и вызов контекстного меню
        self.menu = QtWidgets.QMenu(self)
        Action1 = QtWidgets.QAction('Action1', self)
        Action2 = QtWidgets.QAction('Action2', self)
        Action3 = QtWidgets.QAction('Action3', self)
        self.menu.addAction(Action1)
        self.menu.addAction(Action2)
        self.menu.addAction(Action3)
        self.menu.popup(QtGui.QCursor.pos())



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

UI_test.py

from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import Qt
from random import randint

class Ui_Form(object):
    def setupUi(self, Form):
        Form.resize(1300, 700)
        self.layout = QtWidgets.QHBoxLayout()
        self.layout.setContentsMargins(0, 0, 0, 0)
        self.listWidget = QtWidgets.QListWidget()
        self.layout.addWidget(self.listWidget)
        self.stackedWidget = QtWidgets.QStackedWidget()
        self.layout.addWidget(self.stackedWidget)
        self.listWidget.currentRowChanged.connect(
        self.stackedWidget.setCurrentIndex)

        item1 = QtWidgets.QListWidgetItem(QtGui.QIcon('icons/settings.png'),'CamSettings', self.listWidget)
        item2 = QtWidgets.QListWidgetItem(QtGui.QIcon('icons/explore.png'),'Explore', self.listWidget)

        item1.setSizeHint(QtCore.QSize(10, 60))
        item2.setSizeHint(QtCore.QSize(10, 60))

        item1.setTextAlignment(QtCore.Qt.AlignCenter)
        item2.setTextAlignment(QtCore.Qt.AlignCenter)

        label1 = QtWidgets.QLabel('Это страница 1')
        label2= QtWidgets.QLabel('Это страница 2')
        label1.setAlignment(QtCore.Qt.AlignCenter)
        label2.setAlignment(QtCore.Qt.AlignCenter)
        label1.setStyleSheet('background: rgb(%d, %d, %d); margin: 50px;' % (
        randint(0, 255), randint(0, 255), randint(0, 255)))
        label2.setStyleSheet('background: rgb(%d, %d, %d); margin: 50px;' % (
        randint(0, 255), randint(0, 255), randint(0, 255)))

        self.table_cubes = QtWidgets.QTableWidget()
        self.table_cubes.setColumnCount(1)
        self.table_cubes.setObjectName('tableCubes')
        self.table_cubes.setHorizontalHeaderLabels(['Название куба'])
        header_class = self.table_cubes.horizontalHeader()
        header_class.hide()
        header_v_cube = self.table_cubes.verticalHeader()
        header_v_cube.setStyleSheet(' background-color: #232939;')
        self.table_cubes.setFixedWidth(310)
        self.table_cubes.setFixedHeight(330)
        self.table_cubes.setColumnWidth(0, 200)
        self.table_cubes.contextMenuEvent = Form.contextMenuEvent
        first_panel_left = QtWidgets.QVBoxLayout()
        first_panel_left.setAlignment(Qt.AlignTop)
        first_panel_frame_left = QtWidgets.QFrame()
        first_panel_frame_left.setMinimumWidth(200)
        first_panel_frame_left.setLayout(first_panel_left)
        first_panel_right = QtWidgets.QVBoxLayout()
        first_panel_right.addWidget(self.table_cubes)
        first_panel_right.addStretch()
        first_panel_frame_right = QtWidgets.QFrame()
        first_panel_frame_right.setLayout(first_panel_right)
        main_first_box = QtWidgets.QHBoxLayout()
        main_first_box.addWidget(first_panel_frame_left)
        main_first_box.addWidget(first_panel_frame_right)
        first_container = QtWidgets.QWidget()
        first_container.setLayout(main_first_box)
        self.stackedWidget.addWidget(first_container)
        self.stackedWidget.addWidget(label2)
        Form.setLayout(self.layout)
python
  • 1 个回答
  • 10 Views
Martin Hope
Guamokolatokint
Asked: 2022-05-19 23:07:22 +0000 UTC

转换数据结构

  • 0

有一个数据结构,内容如下:

anno_data=[['Item1', 'Rectangle', 'label1', '018', '[276, 22]', '[18.0, 21.0]'],
 ['Item1', 'Polygon', 'label1', '018', '[[199.0, 179.0], [200.0, 179.0], [201.0, 179.0], [202.0, 179.0], [203.0, 179.0], [204.0, 179.0], [207.0, 211.0], [206.0, 211.0], [205.0, 211.0], [204.0, 211.0], [203.0, 211.0], [202.0, 211.0], [201.0, 211.0], [200.0, 211.0], [199.0, 211.0], [198.0, 211.0], [197.0, 211.0], [195.0, 210.0], [194.0, 209.0], [192.0, 207.0], [191.0, 206.0], [192.0, 206.0]]', ''],
           ['Item1', 'Point', 'label1', '018', '[380, 171]', ''],
           ['Item2', 'Rectangle', 'label1', '032', '[67, 80]', '[39.0, 46.0]']]

可以看出这是一个列表列表。在第三个位置的每个列表中都有元素“018”和“032”。您需要参与这些元素,并基于它们创建以下结构

{
"032": {
    "filename": "032",
    "regions": {
        "0": {
            "shape_attributes": {
                "name": "Rectangle",
                "x": 67,
                "y": 80,
                "width": 39.0,
                "height": 46.0
            },
            "region_attributes": {
                "label": "label1"
            }
        }
    }
},
"018": {
    "filename": "018",
    "regions": {
        "0": {
            "shape_attributes": {
                "name": "Rectangle",
                "x": 276,
                "y": 22,
                "width": 18.0,
                "height": 21.0
            },
            "region_attributes": {
                "label": "label1"
            }
        },
        "1": {
            "shape_attributes": {
                "name": "Point",
                "cx": 380,
                "cy": 171
            },
            "region_attributes": {
                "label": "label1"
            }
        }
       
    }
}   
}

我的代码

def get_w_h(str_wh):
    to_lst = list(eval(str_wh))
    return to_lst

def all_x_y(fig, coords):
    to_lst = list(eval(coords))
    if fig == 'Point':
        return [[to_lst[0]], [to_lst[1]]]
    else:
        x = to_lst[0]
        y = to_lst[1]
        return x,y


dic=dict()
uniq=set([l1[3] for l1 in anno_data])
for k in uniq:
    dic[k]=[]

med_d={}

for i in anno_data:
    it=0
    dic_sh_att = {}
    dic_reg_att={}
    if i[3] in dic:
        if i[1]=='Rectangle':
            dic_sh_att['name'] = i[1]
            dic_sh_att['x'] = all_x_y(i[1], i[4])[0]
            dic_sh_att['y'] = all_x_y(i[1], i[4])[1]
            dic_sh_att['width']=get_w_h(i[5])[1]
            dic_sh_att['height']= get_w_h(i[5])[0]
    
        else:
            dic_sh_att['name'] = i[1]
            dic_sh_att['cx'] = all_x_y(i[1], i[4])[0]
            dic_sh_att['cy'] = all_x_y(i[1],i[4])[1]
        dic_reg_att["label"] = i[2]
        dic_reg_att["class"]=str(it)
        med_d[it]={"shape_attributes":dic_sh_att,
              "region_attributes": dic_reg_att}
        dic[i[3]].append(med_d)
        it += 1

但结果不一样。我不知道如何正确地做到这一点。帮助请

python
  • 2 个回答
  • 10 Views
Martin Hope
Guamokolatokint
Asked: 2022-05-13 17:49:47 +0000 UTC

在 PySide2 中应用样式打开新窗口

  • 1

我有一个在我的应用程序中打开新窗口的按钮。
我希望这些窗户以某种方式“漂亮地”打开。好吧,在左边,他们要么从上面航行,要么有某种延迟。

我在任何地方都找不到这样的例子。有人可以告诉我如何为子窗口制作类似的样式吗?谢谢你。

我举一个打开新窗口的简单例子

UI_test.py

from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import Qt
from random import randint
class Ui_Form(object):
def setupUi(self, Form):
    Form.resize(1300, 700)
    self.layout = QtWidgets.QHBoxLayout()
    self.layout.setContentsMargins(0, 0, 0, 0)
    self.layout.setSpacing(0)
    self.listWidget = QtWidgets.QListWidget()
    self.layout.addWidget(self.listWidget)
    self.stackedWidget = QtWidgets.QStackedWidget()
    self.layout.addWidget(self.stackedWidget)
    self.listWidget.currentRowChanged.connect(
        self.stackedWidget.setCurrentIndex)
    item1 = QtWidgets.QListWidgetItem(QtGui.QIcon('icons/settings.png'),'CamSettings', self.listWidget)
    item2 = QtWidgets.QListWidgetItem(QtGui.QIcon('icons/explore.png'),'Explore', self.listWidget)
    item1.setSizeHint(QtCore.QSize(10, 60))
    item2.setSizeHint(QtCore.QSize(10, 60))
    item1.setTextAlignment(QtCore.Qt.AlignCenter)
    item2.setTextAlignment(QtCore.Qt.AlignCenter)
    label2= QtWidgets.QLabel('Это страница 2')
    label2.setAlignment(QtCore.Qt.AlignCenter)
    label2.setStyleSheet('background: rgb(%d, %d, %d); margin: 50px;' % (
        randint(0, 255), randint(0, 255), randint(0, 255)))
    create_tiff_but = QtWidgets.QPushButton('Create TIFF')
    create_tiff_but.setObjectName('createTifBut')
    create_tiff_but.setFixedSize(200, 70)
    create_tiff_but.clicked.connect(Form.create_tiff)
    image_panel_buttons = QtWidgets.QHBoxLayout()
    image_panel_buttons.addWidget(create_tiff_but)
    image_panel_buttons_frame = QtWidgets.QFrame()
    image_panel_buttons_frame.setLayout(image_panel_buttons)
    main_first_box = QtWidgets.QVBoxLayout()
    main_first_box.addWidget(image_panel_buttons_frame)
    first_container = QtWidgets.QWidget()
    first_container.setLayout(main_first_box)
    self.stackedWidget.addWidget(first_container)
    self.stackedWidget.addWidget(label2)
    Form.setLayout(self.layout)

应用程序.py

import sys
import os
from PySide2 import QtWidgets
from PySide2 import QtWidgets, QtGui, QtCore
from UI_test import Ui_Form
from create_tiff import Create_TIFF

class App(QtWidgets.QWidget):
    def __init__(self, parent = None):
        QtWidgets.QWidget.__init__(self, parent)
        self.ui = Ui_Form()
        self.ui.setupUi(self)

    def create_tiff(self):
        # функция открытия диалогового окна для создания tiff
        self.ct = Create_TIFF()
        self.ct.displayInfo()

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

create_tiff.py

import os
import json
from PySide2 import QtWidgets
from PySide2 import QtCore

class Create_TIFF(QtWidgets.QWidget):
#модуль с диалоговым окном для создания tiff файла
def __init__(self, parent=None):
    super(Create_TIFF, self).__init__(parent)
    self.setFixedWidth(400)
    self.setFixedHeight(220)
    self.setObjectName('modalTIFF')
    self.setWindowTitle('Create TIFF')
    self.json=None
    self.path=None
    button_json = QtWidgets.QPushButton("JSON")
    button_json.setObjectName('modalJSONBtn')
    button_json.setFixedWidth(90)
    button_img = QtWidgets.QPushButton("IMG PATH")
    button_img.setObjectName('modalImgPathBtn')
    button_img.setFixedWidth(90)
    button_tiff = QtWidgets.QPushButton("Create TIFF")
    button_tiff.setObjectName('modalCrtTIFFBtn')
    button_tiff.setFixedSize(200, 70)
    json_label = QtWidgets.QLabel('Название json')
    self.name_json= QtWidgets.QLineEdit()
    self.name_json.setFixedWidth(160)
    path_label = QtWidgets.QLabel('Путь к файлу')
    self.name_path = QtWidgets.QLineEdit()
    self.name_path.setFixedWidth(160)
    first_h_box = QtWidgets.QHBoxLayout()
    first_h_box.addWidget(json_label)
    first_h_box.addWidget(self.name_json)
    first_h_box.addWidget(button_json)
    second_h_box = QtWidgets.QHBoxLayout()
    second_h_box.addWidget(path_label)
    second_h_box.addWidget(self.name_path)
    second_h_box.addWidget(button_img)
    first_h_box_frame = QtWidgets.QFrame()
    first_h_box_frame.setLayout(first_h_box)
    second_h_box_frame = QtWidgets.QFrame()
    second_h_box_frame.setLayout(second_h_box)
    vbox = QtWidgets.QVBoxLayout()
    vbox.addWidget(first_h_box_frame)
    vbox.addWidget(second_h_box_frame)
    vbox.addWidget(button_tiff,alignment=QtCore.Qt.AlignCenter)
    self.setLayout(vbox)
    resolution = QtWidgets.QDesktopWidget().screenGeometry()
    self.move((resolution.width() / 2) - (self.frameSize().width() / 2),
              (resolution.height() / 2) - (self.frameSize().height() / 2))

def displayInfo(self):
    self.show()
python
  • 1 个回答
  • 10 Views
Martin Hope
Guamokolatokint
Asked: 2022-05-12 23:13:05 +0000 UTC

删除 QHBoxLayout 中小部件之间的填充

  • 1

应用外观

在此处输入图像描述

如您所见,一个灯条将按钮列表分隔在主窗口的左侧。我不明白它来自哪里或如何删除它。请告诉我。

应用程序.py

import sys
from PySide2 import QtWidgets
from UI_test import Ui_Form

class App(QtWidgets.QWidget):
    def __init__(self, parent = None):
        QtWidgets.QWidget.__init__(self, parent)
        self.ui = Ui_Form()
        self.ui.setupUi(self)


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = App()
    File = open("styles/style.qss",'r')
    with File:
        qss = File.read()
    app.setStyleSheet(qss)
    window.show()
    sys.exit(app.exec_())

样式.qss

QListWidget, QListView, QTreeWidget, QTreeView {
outline: 0px;
    }
QListWidget {
    min-width: 120px;
    max-width: 180px;
    color: white;
    background: rgb(30, 30, 30);
}
QListWidget::item:selected {
    background: rgb(168, 71, 245);
   /* border-left: 2px solid rgb(9, 187, 7);*/
}
HistoryPanel::item:hover {background: rgb(52, 52, 52);}
QStackedWidget {background: rgb(30, 30, 30);}
QLabel {color: white;}
QLabel#mainPic {border-style: solid; border-width: 2px;  background-color:#757575;}
QListWidget {background-color: #454e5e;
    color: rgb(30, 30, 30);
    font-size: 12px;
    font-weight: bold;
    border: 1px solid #191919;
    show-decoration-selected: 0;
    padding-left: -13px;
    padding-right: -13px;}

QListWidget::item
{
color: #31cecb;
background-color: #454e5e;
border: none;
padding: 5px;
border-radius: 0px;
padding-left : 10px;
height: 42px;
}
QListWidget::item:selected
{
color: rgb(143, 58, 132);
background-color: #31cecb;
}
QListWidget::item:!selected
{
color:white;
background-color: transparent;
border: none;
padding-left : 10px;
}

QListWidget::item:!selected:hover
{
color: black;
background-color: #bcbdbb;
border: none;
padding-left : 10px;
}

UI_test.py

from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import Qt
from random import randint

class Ui_Form(object):
    def setupUi(self, Form):
        Form.resize(1300, 700)
        self.layout = QtWidgets.QHBoxLayout()
        self.layout.setContentsMargins(0, 0, 0, 0)
        self.listWidget = QtWidgets.QListWidget()
        self.layout.addWidget(self.listWidget)
        self.stackedWidget = QtWidgets.QStackedWidget()
        self.layout.addWidget(self.stackedWidget)
        self.listWidget.currentRowChanged.connect(
            self.stackedWidget.setCurrentIndex)

        item1 = QtWidgets.QListWidgetItem(QtGui.QIcon('icons/settings.png'),'CamSettings', self.listWidget)
        item2 = QtWidgets.QListWidgetItem(QtGui.QIcon('icons/explore.png'),'Explore', self.listWidget)
        item3 = QtWidgets.QListWidgetItem(QtGui.QIcon('icons/models.png'),'Models', self.listWidget)
        item4 = QtWidgets.QListWidgetItem(QtGui.QIcon('icons/live.png'),'Live', self.listWidget)

        item1.setSizeHint(QtCore.QSize(10, 60))
        item2.setSizeHint(QtCore.QSize(10, 60))
        item3.setSizeHint(QtCore.QSize(10, 60))
        item4.setSizeHint(QtCore.QSize(10, 60))

        item1.setTextAlignment(QtCore.Qt.AlignCenter)
        item2.setTextAlignment(QtCore.Qt.AlignCenter)
        item3.setTextAlignment(QtCore.Qt.AlignCenter)
        item4.setTextAlignment(QtCore.Qt.AlignCenter)

        label1 = QtWidgets.QLabel('Это страница 1')
        label2= QtWidgets.QLabel('Это страница 2')
        label3 = QtWidgets.QLabel('Это страница 3')
        label4 = QtWidgets.QLabel('Это страница 4')
        
        label1.setAlignment(QtCore.Qt.AlignCenter)
        label2.setAlignment(QtCore.Qt.AlignCenter)
        label3.setAlignment(QtCore.Qt.AlignCenter)
        label4.setAlignment(QtCore.Qt.AlignCenter)

        label1.setStyleSheet('background: rgb(%d, %d, %d); margin: 50px;' % (
            randint(0, 255), randint(0, 255), randint(0, 255)))
        label2.setStyleSheet('background: rgb(%d, %d, %d); margin: 50px;' % (
            randint(0, 255), randint(0, 255), randint(0, 255)))
        label3.setStyleSheet('background: rgb(%d, %d, %d); margin: 50px;' % (
            randint(0, 255), randint(0, 255), randint(0, 255)))
        label4.setStyleSheet('background: rgb(%d, %d, %d); margin: 50px;' % (
            randint(0, 255), randint(0, 255), randint(0, 255)))

        self.image_main = QtWidgets.QLabel()
        self.image_main.setObjectName('mainPic')
        self.image_main.setFixedSize(512, 512)
        pixmap_main = QtGui.QPixmap()
        self.image_main.setPixmap(pixmap_main)
        self.image_main.adjustSize()

        self.slider_all_layers = QtWidgets.QSlider()
        self.slider_all_layers.setOrientation(QtCore.Qt.Horizontal)
        self.slider_all_layers.setMinimum(0)
        self.slider_all_layers.setMaximum(100)
        self.slider_all_layers.setFixedWidth(500)

        button_json = QtWidgets.QPushButton("Create JSON")
        button_json.setFixedWidth(200)

        first_panel_left = QtWidgets.QVBoxLayout()
        first_panel_left.setAlignment(Qt.AlignTop)
        #first_panel_left.addWidget(button_json)

        first_panel_frame_left = QtWidgets.QFrame()
        first_panel_frame_left.setMinimumWidth(200)
        first_panel_frame_left.setLayout(first_panel_left)

        first_panel_right = QtWidgets.QVBoxLayout()
        first_panel_right.addWidget(self.image_main)
        first_panel_right.addWidget(self.slider_all_layers)
        first_panel_right.addStretch()

        first_panel_frame_right = QtWidgets.QFrame()
        first_panel_frame_right.setLayout(first_panel_right)

        main_first_box = QtWidgets.QHBoxLayout()
        main_first_box.addWidget(first_panel_frame_left)
        main_first_box.addWidget(first_panel_frame_right)

        first_container = QtWidgets.QWidget()
        first_container.setLayout(main_first_box)

        self.stackedWidget.addWidget(first_container)
        self.stackedWidget.addWidget(label2)
        self.stackedWidget.addWidget(label3)
        self.stackedWidget.addWidget(label4)
        Form.setLayout(self.layout)
python
  • 1 个回答
  • 10 Views
Martin Hope
Guamokolatokint
Asked: 2022-05-12 18:15:50 +0000 UTC

PySide 没有“看到”样式表

  • 0

我将一个单独的 qss 文件连接到 Pyside

 if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = App()
    File = QtCore.QFile("styles/styles.qss")
    qss = QtCore.QTextStream(File)
    app.setStyleSheet(qss.readAll())
    window.show()
    sys.exit(app.exec_())

qss内容

 QListWidget, QListView, QTreeWidget, QTreeView {
outline: 0px;
}
QListWidget {
    min-width: 120px;
    max-width: 120px;
    color: white;
    background: black;
}
QListWidget::item:selected {
    background: rgb(52, 52, 52);
    border-left: 2px solid rgb(9, 187, 7);
}
HistoryPanel::item:hover {background: rgb(52, 52, 52);}
QStackedWidget {background: rgb(30, 30, 30);}
QLabel {color: white;}

我收到一个错误

QIODevice::read (QFile, "styles/styles.qss"): device not open

文件就位,一切正常。我不明白怎么了

python
  • 2 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5