我正在尝试更改特定操作的按钮图标。(点击、禁用等)
举个例子,让我们按下按钮,如果我有一个按钮:
btn = QtGui.QPushButton(" ", self)
btn.resize(100, 100)
btn.move(0, 0)
btn.setIcon(QtGui.QIcon(""))
btn.setIconSize(QtCore.QSize(100, 100))
Run Code Online (Sandbox Code Playgroud)
单击时如何更改其图标?我需要发出点击信号吗?
btn.clicked.connect(self.some_function_that_shows_new_icon)
如果是这样,我怎样才能使禁用信号或任何其他按钮条件可用?
例子:
btn.disabled.connect(self.some_function_that_shows_new_icon)
(将检测按钮是否禁用的信号,上面的一个不起作用)
我在javascript中动态创建了表单元素:
var selectform = document.createElement("form")
我已将其他输入元素和这些属性添加到selectform:
submitnselection.setAttribute('type',"submit");
submitnselection.setAttribute('value',"Submit");
submitnselection.setAttribute("name","submitnpage");
selectform.setAttribute("method", "post")
selectform.setAttribute = ("action", "/test")
"{% csrf_token %}";
Run Code Online (Sandbox Code Playgroud)
在HTML中,添加{% csrf_token %}
模板标签会起作用,但在这种情况下javascript我得到403禁止错误:
CSRF令牌丢失或不正确.
我找到了一些解决方案,但没有什么对我有用,有没有办法{% csrf_token %}
只使用Django,Javascript和普通的Jquery 添加到表单?另请注意,此脚本位于html内部,因此我认为{% csrf_token %}
模板标记可以正常工作.
我对此问题进行了一些研究,但找不到任何简单的答案或教程来完成此任务。
我正在尝试找到一个小部件,它将使用QPushButton在页面之间进行转换。我听说过QStackWidget,但是我不确定如何使用它,我找到了很多教程,但是所有教程都很难理解。
因此,例如,我有一个窗口类:
import sys
from PyQt4 import QtGui, QtCore
class Window(QtGui.QMainWindow):
Run Code Online (Sandbox Code Playgroud)
如何将QStackWidget添加到此类?(没有任何布局)
如果这样做,如何使用QPushButton切换到特定页面?(在一个索引中添加多个小部件)
extra:是否可以对过渡添加某种效果?如褪色等
我在PyQt(通常是一个测验游戏)中制作了一个多页面应用程序。
因此,现在每当用户犯错或正确回答问题时,它就会调用正确/错误函数。
错误的回答功能:
def incorrect(self):
self.pic3.hide()
self.que1.hide()
self.answ.hide()
self.answ1.hide()
self.answ2.hide()
self.pic4.setGeometry(0, 0, 1280, 800)
self.pic4.show()
self.goback.show()
self.cont = QtGui.QPushButton(self)
self.cont.setObjectName('cont')
self.cont.setStyleSheet("#cont {background-image: url(':/images/Continue.png'); border: none; }"
"#cont:hover { background-image: url(':/images/Continue1.png'); }"
"#cont:pressed { background-image: url(':/images/Continue2.png'); }")
self.cont.setGeometry(980, 610, 300, 300)
self.cont.clicked.connect(self.question2)
self.cont.show()
self.heart2.hide()
#self.heart1.hide()
if ( self.heart2.isHidden() and self.heart1.isHidden() ):
gameover()
else:
pass
Run Code Online (Sandbox Code Playgroud)
所以我要在此函数中创建多个“ cont”小部件,其目的是因为我希望它继续针对特定的问题(如果用户在问题1处失败或成功,则应该继续对问题2进行回答)。
但是为此,应该有一个代码来确定是否从button1或button2调用了不正确的答案功能,单击时两个按钮都连接到同一插槽,如果从button1调用了它,它将显示cont按钮,单击该按钮时将显示question2小部件。 (Question2页)。
但是,如果它是从button2调用的,它将显示cont2按钮,单击该按钮将显示问题3页面。
它在代码中应该看起来像这样:
if self.connected from button1: …
Run Code Online (Sandbox Code Playgroud) 关于将整数转换为由零引导的数字有很多问题,但我找不到任何解决方案来增加已经由零引导的字符串。
Python 已经将数字以零为单位转换为正常整数:
>>> 0001
1
>>> int(0001)
1
Run Code Online (Sandbox Code Playgroud)
考虑到这一点,每当我将两个以零为首的数字相加时,我都会得到一个正常的整数:
>>> 0001 + 0001
2
>>> int('0001') + int('0001')
2
Run Code Online (Sandbox Code Playgroud)
但是,我想知道的是,例如,如何获得总和,例如0002
将两个相加时0001
。
显然它应该打印为字符串类型,因为 Python 将数字以零为首的数字转换为普通整数。
还请考虑这样的一些情况:
x = 0001
如何在不指定零的情况下将 x 增加 1?
有没有 Pythonic 的方法来做到这一点?解决方案适用于所有以零为首的数字情况?('0001' + '0001' == '0002' and '01' + '01' == '02'
,例如)。
我正在尝试为系统创建准确且高效的搜索算法。我安装了 Postgresql 来利用它的三元组相似性查询,这就是我搜索对象的方式:
objects_found = Question.objects.extra(where=["CHAR_LENGTH(answer) > 300"])).filter(question__trigram_similar=message
Run Code Online (Sandbox Code Playgroud)
这速度快得令人难以置信,执行大部分查询只用了不到 0.5 秒的时间。查询集的所有对象objects_found
都与查询文本相似,但我需要找出最相似的一个。
我知道在这种情况下有两种非常好的算法,第一个是余弦相似度,第二个是Ratcliff/Obershelp 模式识别(它在 Python 中有内置实现)。
我尝试进行一次迭代,对它们中的每一个进行测试,在大多数情况下,余弦相似度大约快 1.5 倍(正如预期的那样,考虑到向量的测量速度要快得多),但 SequenceMatcher 会给出更准确的结果。所以我还是选择了SequenceMatcher。请注意,这次迭代花了很长时间。
最后,我尝试在代码中实现SequenceMatcher:
objects_found = (Question.objects.extra(where=["CHAR_LENGTH(answer) > 300"])).filter(question__trigram_similar=message).iterator()
zsim = ("", 0)
for i in objects_found:
rsim = _search.ratcliff_obershelp(querytext, i.question)
if zsim[1] < rsim:
zsim = (i.answer, rsim)
if rsim > 0.75: # works in most of the cases
break
response = zsim[0]
Run Code Online (Sandbox Code Playgroud)
数据库中有约 1GB 的约 500 万行,postgresql 需要不到 0.5 秒的时间来选择具有三元相似性的正确行。在大约 500 万行中,只有 10-90 …
为了正确格式化字符串,我需要将其拆分为不同长度的块.
作为一个例子,这是一个字符串 - 25c319f75e3fbed5a9f0497750ea12992b30d565
,为了将它拆分成固定长度的块,我只需使用步骤和切片:
s = '25c319f75e3fbed5a9f0497750ea12992b30d565'
n = 2
print("-".join([s[i:i+n] for i in range(0, len(s), n)]))
Run Code Online (Sandbox Code Playgroud)
但是,如果n
要拆分的数字列表,我该怎么办?例如:
s = '25c319f75e3fbed5a9f0497750ea12992b30d565'
n = [8, 4, 4, 4, 4, 12] # edited for consistency - Coldspeed
Run Code Online (Sandbox Code Playgroud)
我做的唯一解决方案是:
print("-".join([s[0:8], s[8:12], s[12:16], s[16:20], s[20:24], s[24:32]]))
Run Code Online (Sandbox Code Playgroud)
哪个不是pythonic,更不一定不可靠的字符串长度很大.
最后一个代码示例的输出:
25c319f7-5e3f-bed5-a9f0-4977-50ea1299
Run Code Online (Sandbox Code Playgroud)
那么这可以用更多的pythonic单线方式来完成吗?如果没有,还有什么其他更自动的方法呢?