小编BPL*_*BPL的帖子

如何捕捉QGraphicsTextItem网格?

让这个小片段:

import sys
from PyQt5 import QtWidgets
from PyQt5 import QtCore
from PyQt5 import QtGui
from PyQt5.QtWidgets import QMenu
from PyQt5.QtGui import QKeySequence
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QCursor
from PyQt5.QtWidgets import QGraphicsObject
from PyQt5.QtCore import QRectF
from PyQt5.QtGui import QBrush
from PyQt5.QtCore import QPoint
from PyQt5.QtGui import QLinearGradient
from PyQt5.QtGui import QColor
from PyQt5.QtGui import QPen
from PyQt5.QtGui import QPainter
from PyQt5.QtWidgets import QGraphicsTextItem
from PyQt5.QtWidgets import QGraphicsItem


def create_action(parent, text, slot=None,
                  shortcut=None, shortcuts=None, shortcut_context=None,
                  icon=None, tooltip=None, …
Run Code Online (Sandbox Code Playgroud)

python pyqt python-3.x pyqt5

6
推荐指数
1
解决办法
653
查看次数

如何使用AST python模块从中缀转换为后缀/前缀?

我正在尝试使用AST python模块将python数学表达式转换为postfix表示法.这是我到目前为止所得到的:

import parser
import ast
from math import sin, cos, tan

formulas = [
    "1+2",
    "1+2*3",
    "1/2",
    "(1+2)*3",
    "sin(x)*x**2",
    "cos(x)",
    "True and False",
    "sin(w*time)"
]


class v(ast.NodeVisitor):

    def __init__(self):
        self.tokens = []

    def f_continue(self, node):
        super(v, self).generic_visit(node)

    def visit_Add(self, node):
        self.tokens.append('+')
        self.f_continue(node)

    def visit_And(self, node):
        self.tokens.append('&&')
        self.f_continue(node)

    def visit_BinOp(self, node):
        # print('visit_BinOp')
        # for child in ast.iter_fields(node):
            # print('  child %s ' % str(child))

        self.f_continue(node)

    def visit_BoolOp(self, node):
        # print('visit_BoolOp')
        self.f_continue(node)

    def visit_Call(self, node):
        # print('visit_Call')
        self.f_continue(node)

    def visit_Div(self, …
Run Code Online (Sandbox Code Playgroud)

python infix-notation abstract-syntax-tree postfix-notation python-3.x

6
推荐指数
1
解决办法
575
查看次数

使用自定义视频编写器库编写音频的Bug

我正在尝试包装一些方便的c ++代码,用于在Windows上使用VFW生成视频+音频,c ++库存在于此处,描述如下:

使用Video for Windows(因此它不可移植).如果您想在某个地方快速录制视频并且不想亲自浏览VfW文档,那就太方便了.

我想在python上使用那个c ++库,所以我决定用swig将它包装起来.

事实上,我在编码音频方面遇到了一些问题,出于某种原因,我试图理解为什么生成的视频被破坏,似乎音频还没有在视频文件中正确写入.这意味着,如果我尝试用VLC或任何类似的视频播放器打开视频,我会收到一条消息,说视频播放器无法识别音频或视频编解码器.视频图像很好,所以我将音频写入文件的方式肯定是个问题.

我正在附加swig接口和一个小python测试,它试图成为原始c ++测试的一个端口.

aviwriter.i

%module aviwriter

%{
#include "aviwriter.h"
%}

%typemap(in) (const unsigned char* buffer) (char* buffer, Py_ssize_t length) %{
  if(PyBytes_AsStringAndSize($input,&buffer,&length) == -1)
    SWIG_fail;
  $1 = (unsigned char*)buffer;
%}

%typemap(in) (const void* buffer) (char* buffer, Py_ssize_t length) %{
  if(PyBytes_AsStringAndSize($input,&buffer,&length) == -1)
    SWIG_fail;
  $1 = (void*)buffer;
%}


%include "aviwriter.h"
Run Code Online (Sandbox Code Playgroud)

test.py

import argparse
import sys
import struct
from distutils.util import strtobool

from aviwriter import AVIWriter


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

c++ python windows audio swig

6
推荐指数
1
解决办法
323
查看次数

如何实现在QScintilla中使用多个选项的注释功能?

我正在尝试在QScintilla中实现一个可以进行多项选择的切换注释功能.不幸的是我不知道该怎么做,到目前为止我已经提出了这个代码:

import sys
import re
import math

from PyQt5.Qt import *  # noqa

from PyQt5.Qsci import QsciScintilla
from PyQt5 import Qsci
from PyQt5.Qsci import QsciLexerCPP


class Commenter():

    def __init__(self, sci, comment_str):
        self.sci = sci
        self.comment_str = comment_str

    def is_commented_line(self, line):
        return line.strip().startswith(self.comment_str)

    def toggle_comment_block(self):
        sci = self.sci

        line, index = sci.getCursorPosition()

        if sci.hasSelectedText() and self.is_commented_line(sci.text(sci.getSelection()[0])):
            self.uncomment_line_or_selection()
        elif not self.is_commented_line(sci.text(line)):
            self.comment_line_or_selection()
        else:
            start_line = line
            while start_line > 0 and self.is_commented_line(sci.text(start_line - 1)):
                start_line -= 1

            end_line = line
            lines = …
Run Code Online (Sandbox Code Playgroud)

python pyqt scintilla qscintilla pyqt5

6
推荐指数
2
解决办法
491
查看次数

如何在QScintilla中使用自定义折叠图标?

请考虑以下代码段:

import sys

from PyQt5.Qsci import QsciScintilla
from PyQt5.Qt import *

if __name__ == '__main__':
    app = QApplication(sys.argv)
    view = QsciScintilla()

    # http://www.scintilla.org/ScintillaDoc.html#Folding
    view.setFolding(QsciScintilla.BoxedTreeFoldStyle)
    # view.setFolding(QsciScintilla.BoxedFoldStyle)
    # view.setFolding(QsciScintilla.CircledFoldStyle)
    # view.setFolding(QsciScintilla.CircledTreeFoldStyle)
    # view.setFolding(QsciScintilla.NoFoldStyle)
    # view.setFolding(QsciScintilla.PlainFoldStyle)

    lines = [
        (0, "def foo():"),
        (1, "    x = 10"),
        (1, "    y = 20"),
        (1, "    return x+y"),
        (-1, ""),
        (0, "def bar(x):"),
        (1, "    if x > 0:"),
        (2, "        print('this is')"),
        (2, "        print('branch1')"),
        (1, "    else:"),
        (2, "        print('and this')"),
        (2, …
Run Code Online (Sandbox Code Playgroud)

python scintilla qscintilla pyqt5

6
推荐指数
1
解决办法
290
查看次数

如何实现类似于 youtube 卡片的上下文菜单?

我正在学习一些 CSS,今天我发现自己想要实现一个类似的上下文菜单(当您点击 youtube 卡片上的垂直省略号时显示的菜单),但我的尝试没有成功很远:D。这是我所拥有的:

<!DOCTYPE html>
<html>

<head>
<style type="text/css">
.container {
    display: inline-block;
    position: relative;
}

.dropdown {
    position: absolute;
    right: 1rem;
    top: 1rem;
}

.dropdown-opener {
    cursor: pointer;
    user-select: none;
    position: absolute;
    right: 0;
}

.dropdown .dropdown-toggle,
.dropdown .dropdown-menu {
    display: none;
    style-type: none;
}

.dropdown .dropdown-toggle:checked+ul {
    display: block;
}

.style-scope .menu-renderer {
    --layout-inline_-_display: inline-flex;
    --icon-button-icon-height: 24px;
    --icon-button-icon-width: 24px;
    --spec-icon-active-other: #606060;
    --spec-icon-inactive: #909090;
    --spec-text-disabled: #909090;
    --spec-text-secondary: #606060;
    align-items: var(--layout-center-center_-_align-items);
    color: var(--menu-renderer-button-color, var(--spec-icon-inactive));
    cursor: pointer;
    display: var(--layout-inline_-_display);
    fill: …
Run Code Online (Sandbox Code Playgroud)

html javascript css

6
推荐指数
1
解决办法
229
查看次数

如何在QScintilla中实现SublimeText逐级功能

我正在尝试fold_by_level在QScintilla组件上实现SublimeText3功能,但我不知道如何做到这一点,到目前为止我已经提出了这个代码:

import sys
import re
import math

from PyQt5.Qt import *  # noqa

from PyQt5.Qsci import QsciScintilla
from PyQt5 import Qsci
from PyQt5.Qsci import QsciLexerCPP


class Foo(QsciScintilla):

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

        # http://www.scintilla.org/ScintillaDoc.html#Folding
        self.setFolding(QsciScintilla.BoxedTreeFoldStyle)

        # Indentation
        self.setIndentationsUseTabs(False)
        self.setIndentationWidth(4)
        self.setBackspaceUnindents(True)
        self.setIndentationGuides(True)

        # Set the default font
        self.font = QFont()
        self.font.setFamily('Consolas')
        self.font.setFixedPitch(True)
        self.font.setPointSize(10)
        self.setFont(self.font)
        self.setMarginsFont(self.font)

        # Margin 0 is used for line numbers
        fontmetrics = QFontMetrics(self.font)
        self.setMarginsFont(self.font)
        self.setMarginWidth(0, fontmetrics.width("000") + 6)
        self.setMarginLineNumbers(0, True)
        self.setMarginsBackgroundColor(QColor("#cccccc"))

        # Indentation
        self.setIndentationsUseTabs(False)
        self.setIndentationWidth(4)
        self.setBackspaceUnindents(True)

        lexer …
Run Code Online (Sandbox Code Playgroud)

python pyqt scintilla folding qscintilla

5
推荐指数
1
解决办法
263
查看次数

如何从子树列表创建树?

考虑一下,我们有一堆看起来像这样的字幕:

subtree1 = {
    "id": "root",
    "children": [
        {
            "id": "file",
            "caption": "File",
            "children": []
        },
        {
            "id": "edit",
            "caption": "Edit",
            "children": []
        },
        {
            "id": "tools",
            "caption": "Tools",
            "children": [
                {
                    "id": "packages",
                    "caption": "Packages",
                    "children": []
                }
            ]
        },
        {
            "id": "help",
            "caption": "Help",
            "children": []
        },
    ]
}

subtree2 = {
    "id": "root",
    "children": [
        {
            "id": "file",
            "caption": "File",
            "children": [
                {"caption": "New"},
                {"caption": "Exit"},
            ]        
        }
    ]
}

subtree3 = {
    "id": "root",
    "children": [ …
Run Code Online (Sandbox Code Playgroud)

python tree

5
推荐指数
1
解决办法
405
查看次数

Why are equivalent shaders outputting different results?

Let's consider this mcve:

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
import textwrap
from string import Template


def compile(shader_type, source):
    identifier = glCreateShader(shader_type)
    glShaderSource(identifier, source)
    glCompileShader(identifier)

    if not glGetShaderiv(identifier, GL_COMPILE_STATUS):
        for i, l in enumerate(source.splitlines()):
            print(f"{i+1}: {l}")
        raise Exception(glGetShaderInfoLog(identifier).decode("utf-8"))

    return identifier


def create_program(vs, fs):
    vs_identifier = compile(GL_VERTEX_SHADER, vs)
    fs_identifier = compile(GL_FRAGMENT_SHADER, fs)

    program = glCreateProgram()
    glAttachShader(program, vs_identifier)
    glAttachShader(program, fs_identifier)
    glLinkProgram(program)
    if not glGetProgramiv(program, GL_LINK_STATUS):
        raise RuntimeError(glGetProgramInfoLog(program))

    return program


def set_uniform1f(prog, name, v0):
    # print("set_uniform1f", name, …
Run Code Online (Sandbox Code Playgroud)

python opengl shader glsl fragment-shader

5
推荐指数
0
解决办法
112
查看次数

如何更改 material-ui 选择值?

让我们首先考虑这个小片段:

import "./styles.css";
import List from "@material-ui/core/List";
import ListItem from "@material-ui/core/ListItem";
import ListItemIcon from "@material-ui/core/ListItemIcon";
import ListItemSecondaryAction from "@material-ui/core/ListItemSecondaryAction";
import ListItemText from "@material-ui/core/ListItemText";
import Checkbox from "@material-ui/core/Checkbox";
import Select from "@material-ui/core/Select";
import React, { Component } from "react";

class WidgetList extends Component {
  constructor(props) {
    super(props);
    this.state = {};
  }

  onChangeTag = (event, item) => {
    item.tag = event.target.value;
    console.log("changing tag", event.target, item.name);
  };

  render() {
    const { allItems } = this.props;
    const { selectedItems } = this.props;

    return ( …
Run Code Online (Sandbox Code Playgroud)

reactjs material-ui

5
推荐指数
2
解决办法
1887
查看次数