让这个小片段:
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) 我正在尝试使用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
我正在尝试包装一些方便的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) 我正在尝试在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) 请考虑以下代码段:
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) 我正在学习一些 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)我正在尝试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) 考虑一下,我们有一堆看起来像这样的字幕:
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) 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) 让我们首先考虑这个小片段:
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) python ×8
pyqt ×3
pyqt5 ×3
qscintilla ×3
scintilla ×3
python-3.x ×2
audio ×1
c++ ×1
css ×1
folding ×1
glsl ×1
html ×1
javascript ×1
material-ui ×1
opengl ×1
reactjs ×1
shader ×1
swig ×1
tree ×1
windows ×1