前端部分我是通过 开发的vue-cli-service serve
,现在我开始在同一个NodeJS + Express.js 上做后端。我遇到了一个问题,当使用connect-history-api-fallback
静态文件时,你需要指定应用程序的完成程序集。因此,当对应用程序的前端部分进行任何更改时,您必须重新构建项目,这不是很方便。
有没有办法让前端和后端部分“交朋友”,以便在开发过程中进行更改时,自动组装的方式与开发时的方式相同vue-cli-service serve
?例如,要在单独的文件夹中构建开发版本并在项目中进行更改时立即重新构建?
SIA's questions
我正在尝试通过 Vkontakte 机器人在 python 上的异步操作来解决这个问题。
我不明白如何使用 asyncio 将 LongPooling 中的事件添加到事件循环中,同时继续轮询服务器:
async def Schedule(self):
await MessageSend()
await asyncio.sleep(10)
await MessageSend()
async def Listen():
for event in Vk.LongPool.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
if event.obj.text == 'Расписание':
task = ioloop.create_task(Schedule())
else:
task = ioloop.create_task(MessageSend())
if __name__ == '__main__':
ioloop = asyncio.get_event_loop()
ioloop.create_task(Listen())
ioloop.run_forever()
ioloop.close()
在这个例子中,函数没有启动,但是如果你通过 await 启动创建的任务,那么所有的事件都会被忽略,直到 Vk.Schedule() 的执行结束。
如何安排所有的事情,使来自循环的事件随着协程的执行继续到达?
面临将轮播对齐页面中心的问题。我为轮播创建了一个单独的容器,我应用了引导样式。col-lg-10 d-flex justify-content-center
但结果,元素仍然移动到网格的左边缘(带有文本的容器具有完全相同的属性并且居中):
出现问题的部分代码:
<section id="main" class="main">
<div class="container">
<div class="col-lg-12 d-flex justify-content-center">
<p class="head_line">Текст который тут будет</p>
</div>
<div class="col-lg-10 d-flex justify-content-center">
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
<li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
</ol>
<div class="carousel-inner">
<div class="carousel-item active">
<img class="d-block w-100" src="img/photos/photo2.jpg" alt="First slide">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="img/photos/photo1.jpg" alt="Second slide">
</div>
</div>
<a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
</div>
</div>
</section>
请帮我把旋转木马居中
我可以使用PyQt5上的一个小界面,以及加载和处理图像的功能。该函数结合 PyQt 的工作执行大约 3-4 秒。
在处理图像时,整个界面被“冻结”。
在这种情况下如何实现多线程,并行化进程而不停止PyQt?
我没有使用多线程,我听说过 asyncio,但我不知道在这种情况下到底该使用什么。
UPD:演示问题的最小示例
import sys
from PyQt5.QtWidgets import *
from time import sleep
class Window(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 200, 200)
self.setWindowTitle('Name')
self.lay = QVBoxLayout(self)
self.inp = QLineEdit()
self.lay.addWidget(self.inp)
self.btn = QPushButton('Действие')
self.lay.addWidget(self.btn)
self.btn.clicked.connect(lambda x: self.some_func(self.inp.text()))
def some_func(self, n):
sleep(int(n)) # Любое действие, требующее существенного времени на выполнение
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Window()
ex.show()
sys.exit(app.exec())
我一直对正确的文本对齐方式感到困惑QTextEdit
。目前我的输出字段如下所示:
如何使文本向右对齐?
我试图开处方setTextAlign()
,但没有帮助。
这是非工作代码:
layout = QGridLayout(self)
self.field = QTextEdit()
self.field.setReadOnly(True)
self.field.setAlignment(Qt.AlignRight)
self.field.setStyleSheet('font-size: 35px')
layout.addWidget(self.field, 0, 0, 1, 5)
UPD:发现错误。问题是,在那之后self.field
我使用了 for 的方法setText()
,而对齐方式会自动设置到左侧。
作为一种解决方案-每次使用后setText()
,重新开处方self.field.setAlignment(Qt.AlignRight)
在PyQt5中创建计算器键盘时出现问题。当一个数字的列占用像素
时,它看起来不太和谐。70
所有按钮都位于内部QGridLayout
。
如何减小列宽以使按钮更窄(甚至是方形)?
现在我正在嵌套循环中实现键盘的创建:
for i in range(4):
for j in range(5):
a = [[1, 2, 3, 'X', '÷'],
[4, 5, 6, '-', '√'],
[7, 8, 9, '+', 'n!'],
['.', 0, 'C', '=']]
if i != 3:
self.btn = QPushButton(f'{a[i][j]}')
self.btn.clicked.connect(self.main)
layout.addWidget(self.btn, i + 1, j)
else:
if j <= 2:
self.btn = QPushButton(f'{a[i][j]}')
self.btn.clicked.connect(self.main)
layout.addWidget(self.btn, i + 1, j)
elif j == 3:
self.btn = QPushButton(f'{a[i][j]}')
self.btn.clicked.connect(self.main)
layout.addWidget(self.btn, i + 1, j, 1, 2)
resize()
方法也试过了setColumnWidth()
。
这些都没有帮助。
从 Yandex.Lyceum 解决问题时,我遇到了一个奇怪的问题。事实是,当尝试使用内置的 rstrip() 方法剪切字符串“nikita_nikitin@untitled.py”时,结果并不完全正确(从我的角度来看)。执行以下段落时:
print('nikita_nikitin@untitled.py'.rstrip('@untitled.py'))
输出是一个字符串
nikita_nik
而输出字符串“nikita_nikitin”是预期的。
我还注意到以下命令更正确地工作:
print('nikita_nikitin9@untitled.py'.rstrip('@untitled.py'))
print('nikita_nikitin@untitled.py'.rstrip('itin@untitled.py'))
在输出中我们得到:
nikita_nikitin9
nikita_nik
仅在 Python 3.7 中作为 IDE - PyCharm 进行检查。
对此,问题是:
解释器的这种行为的原因是什么,这个问题是如何解释的?