使用PyQt4,当我隐藏窗口并在之后显示它时,它出现在另一个位置(至少在Linux上).示例代码:
#!/usr/bin/python3
from PyQt4.QtGui import *
app = QApplication([])
widget = QWidget()
widget.setLayout(QVBoxLayout())
label = QLabel()
widget.layout().addWidget(label)
def hideShow():
widget.hide()
widget.show()
widget.layout().addWidget(QPushButton('Hide/Show', clicked = hideShow))
widget.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)
窗口消失并出现,但略低于原始位置的右侧.我认为它被实际小部件周围窗口管理器框架的大小所取代.
如何将窗口放置在确切的位置?为什么它会移动?它不应该留在原地吗?
当我boxplot在R中以秒为单位测量一些数据时,如何将y轴的比例从秒改为分钟和秒?
例如,当我做这样的事情时:
data <- c(298, 507, 1008, 346)
boxplot(data)
Run Code Online (Sandbox Code Playgroud)
我得到一个boxploty轴从300到1000.我想在那里有"5:00"到"16:40",只需将秒转换为分钟和秒.
我想签署一个我的开源程序的静态.exe版本,以便它可以"正常"方式执行到"普通"Windows用户.
我从certum.eu购买了一个开源代码签名证书,以便能够做到这一点.
在互联网上进行了一些搜索之后,我尝试使用osslsigncode 1.7.1在我的Linux机器上使用来签署exe文件
osslsigncode sign -pkcs12 cert.p12 -pass "..." -h sha2 -t http://timestamp.verisign.com/scripts/timstamp.dll -in some.exe -out some-signed.exe
Run Code Online (Sandbox Code Playgroud)
有人在Windows 10上测试它,会弹出一个粗略警告:"Windows保护您的PC.Windows SmartScreen阻止了无法识别的应用程序启动.运行此应用程序可能会使您的PC面临风险."
所以我尝试使用本机Windows工具signtool.exe来签名.我在旧的虚拟Windows XP中安装了它(在那里我也编译了程序;我没有访问任何其他Windows机器)并用以下方式签署了exe文件
"C:\Programme\Microsoft SDKs\Windows\v7.1\Bin\signtool.exe" sign /f C:\cert.p12 /p "..." /t http://timestamp.verisign.com/scripts/timstamp.dll C:\some.exe
Run Code Online (Sandbox Code Playgroud)
这个工具也说一切都还好,但仍然会弹出同样的警告.
这样,证书就没用了,因为"签名"的exe文件确实产生了与未签名的文件完全相同的警告.我非常感谢这方面的帮助.
我想要QLineEdit不显示输入的文本,而是显示经过处理的版本,同时保留原始文本并在通过 请求时返回它text()。就像密码回显模式一样,但我不希望每个字符都被屏蔽。我想虚拟化空间:
例如 当some text with spaces in between输入时,some\xc2\xb7text\xc2\xb7with\xc2\xb7spaces\xc2\xb7in\xc2\xb7between应显示出来以便人们可以看到空格。就像您在 LibreOffice 中激活 \xc2\xb6 符号一样。
有QLineEdit::displayText(),但是不能设置,只能读取。另外,echoMode只能通过枚举来设置,并且通过EchoMode::Password设置,处理似乎发生在 的私有函数中QLineEdit,因此我也无法覆盖某些处理函数。
这可能吗?
\n我有一个QLabel在QVBoxLayout. 大多数情况下,它只有一行文本,但有时,文本可能太长而无法容纳在一行中。所以我必须启用wordWrap.
我希望标签尽可能(垂直)小,因此我设置setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Maximum).
现在,如果有足够的垂直空间,标签会更高,因为它必须只有一行:
在相同的窗口大小且未启用自动换行的情况下,标签仅占用我希望它占用的最小空间:
这也可以通过启用 wordWrap 并且独立于窗口高度来实现吗?
我有几个QDockWidgets都不是closabale(使用Qt 5.6).因此,右键单击其中一个标题栏时显示的上下文菜单只有禁用的条目,我想禁用整个上下文菜单.
我试图将contextMenuPolicy设置为NoContextMenu但没有成功.
然后我尝试使用QDockWidget的子类,覆盖ContextMenuEvent并忽略它.菜单仍然显示.
然后我尝试安装一个事件过滤器来捕获ContextMenuEvent,但它没有捕获任何,只有PaintEvents,ResizeEvents等.
我没有想法...任何帮助将不胜感激!
我想通过使用PyQt在Python脚本中单击鼠标来绘制由多个点组成的线.我需要所有坐标的坐标,我希望能够删除该行.这是我的脚本完成所有工作,除了图形线条绘图本身,它只是打印它的作用:
#!/usr/bin/python3
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class endomess(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.draw = False
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
if self.draw == False:
print('Starting to draw at', str(event.pos()))
self.draw = True
self.linePoints = []
elif self.draw == True:
print('Appending', str(event.pos()))
self.linePoints.append(event.pos())
elif event.button() == Qt.RightButton:
if self.draw == True:
print('Finished drawing. List of all points:', str(self.linePoints))
self.draw = False
def main(argv):
app = QApplication(argv, True)
wnd = endomess()
wnd.show()
sys.exit(app.exec_())
if __name__ …Run Code Online (Sandbox Code Playgroud) 我有一个QTableWidget的有残疾的setSelectionMode(QTableWidget的:: NOSELECTION),我填不具备的Qt :: ItemIsEditable标志QTableWidgetItems.
然而,单击的单元格会获得某种光标(在我的情况下,底部的黑线):

如何禁用此"光标"?
qt ×4
c++ ×3
python ×3
pyqt ×2
boxplot ×1
code-signing ×1
contextmenu ×1
datetime ×1
drawing ×1
positioning ×1
pyqt4 ×1
qdockwidget ×1
qlabel ×1
qlineedit ×1
qsizepolicy ×1
qt4 ×1
qt5 ×1
qtablewidget ×1
qvboxlayout ×1
r ×1
signtool ×1
window ×1
windows ×1