我对这个简单的python脚本的性能有一些疑问:
import sys, urllib2, asyncore, socket, urlparse
from timeit import timeit
class HTTPClient(asyncore.dispatcher):
def __init__(self, host, path):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.connect( (host, 80) )
self.buffer = 'GET %s HTTP/1.0\r\n\r\n' % path
self.data = ''
def handle_connect(self):
pass
def handle_close(self):
self.close()
def handle_read(self):
self.data += self.recv(8192)
def writable(self):
return (len(self.buffer) > 0)
def handle_write(self):
sent = self.send(self.buffer)
self.buffer = self.buffer[sent:]
url = 'http://pacnet.karbownicki.com/api/categories/'
components = urlparse.urlparse(url)
host = components.hostname or ''
path = components.path
def fn1():
try:
response = urllib2.urlopen(url)
try: …
Run Code Online (Sandbox Code Playgroud) 忍受我,我仍然是QT的新手,并且无法解决它如何处理事情.
我用两列创建并填充了一个QTreeView:
class AppForm(QMainWindow):
def __init__(self, parent = None):
super(AppForm, self).__init__(parent)
self.model = QStandardItemModel()
self.view = QTreeView()
self.view.setColumnWidth(0, 800)
self.view.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.view.setModel(self.model)
self.setCentralWidget(self.view)
Run Code Online (Sandbox Code Playgroud)
一切都很好,除了列非常狭窄.我希望setColumnWidth(0,800)会扩展第一列,但它似乎没有任何效果.设置列宽的正确方法是什么?
我需要找到一种方法来将输入光栅图像(例如jpg)重新调整为指定的宽度/高度分辨率(以像素为单位).如果在调整新图像大小时PyQt会保持原始图像的纵横比(因此没有拉伸而只是缩放)会很棒.
src ='/ Users/usrName/images/originalImage.jpg'(2048x1024)(矩形图像2:1比例)dest ='/ Usrs/usrName/images/originalImage_thumb.jpg'(64x64)(输出图像为方形1:1)比).
提前致谢!
...可用于调整大小并将图像转换为QT支持的任何格式到目前为止...例如:'bmp','gif','jpg','jpeg','png','pbm', 'tiff','svg','xbm'
def resizeImageWithQT(src, dest):
pixmap = QtGui.QPixmap(src)
pixmap_resized = pixmap.scaled(720, 405, QtCore.Qt.KeepAspectRatio)
if not os.path.exists(os.path.dirname(dest)): os.makedirs(os.path.dirname(dest))
pixmap_resized.save(dest)
Run Code Online (Sandbox Code Playgroud) 我正在从文件配置我的Python日志记录(请参阅http://www.python.org/doc//current/library/logging.html#configuration-file-format).
从该页面上的示例中,我在配置文件中有一个格式化程序,如下所示:
[formatter_form01]
format=F1 %(asctime)s %(levelname)s %(message)s
datefmt=
class=logging.Formatter
Run Code Online (Sandbox Code Playgroud)
如何在指定格式化程序的"格式"字符串中添加换行符?既不工作\n
也不\\n
工作(例如format=F1\n%(asctime)s %(levelname)s %(message)s
不起作用).谢谢
我的QTableWidget的列不会填充表格的空间,因此在右侧会留下一个空白区域.如何使我的QTableWidget的列占据最大空间以填充这个空间?
我发现找到一种删除我所选择的简单方法令人沮丧QTreeWidgetItem
.
我的拼凑方法涉及将树的当前选择设置为current
,然后:
if current.parent() is not None:
current.parent().removeChild(current)
else:
self.viewer.takeTopLevelItem(self.viewer.indexOfTopLevelItem(current))
Run Code Online (Sandbox Code Playgroud)
这并不可怕,但是没有一个命令可以直接删除该项目吗?
在Qt 4.8.0的设计器中重现的步骤
当我单击上面的一个布局按钮时,它不会更改页面QWidget的布局,即使我已经明确选择了页面,它也会更改对话框的布局.
这是设计师的错误吗?我错过了什么吗?我真的不想以编程方式添加布局,因为这使我无法在同一.ui文件中布局设计器中的页面
以下代码应创建QGraphicsView小部件,该小部件拥有一个QGraphicsScene,其中包含文本:
#!/usr/bin/python
import sys
from PyQt4.QtGui import *
if __name__ == '__main__':
app = QApplication(sys.argv)
view = QGraphicsView()
scene = QGraphicsScene()
scene.addText("Hello!")
view.setScene(scene)
view.show();
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
这将打开窗口,将文本放在那里,但在关闭窗口后 - python转储核心并打印出几个问题:
(python:5387): Gtk-CRITICAL **: IA__gtk_container_add: assertion `GTK_IS_CONTAINER (container)' failed
(python:5387): Gtk-CRITICAL **: IA__gtk_widget_realize: assertion `GTK_WIDGET_ANCHORED (widget) || GTK_IS_INVISIBLE (widget)' failed
...clip...
... above message is shown many, many times ...
...clip...
(python:5387): Gtk-CRITICAL **: IA__gtk_widget_realize: assertion `GTK_WIDGET_ANCHORED (widget) || GTK_IS_INVISIBLE (widget)' failed
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)
版本:python2.7 2.7.3-0ubuntu3.1 python-qt4 4.9.1-2ubuntu1
我很难显示从当前图标主题中选择的QAction的图标.我用Qt设计师制作了ui并将其导出pyuic4 sample.ui > sample.py
.从主题设置图标后self.actionSample.setIcon(QtGui.QIcon.fromTheme(_fromUtf8("document-open")))
,我得到以下源代码:
from PyQt4 import QtCore, QtGui
import sys
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(800, 600)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
self.toolBar = QtGui.QToolBar(MainWindow)
self.toolBar.setObjectName(_fromUtf8("toolBar"))
MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
self.actionSample = QtGui.QAction(MainWindow)
self.actionSample.setObjectName(_fromUtf8("actionSample"))
self.actionSample.setIcon(QtGui.QIcon.fromTheme(_fromUtf8("document-open")))
self.toolBar.addAction(self.actionSample)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
window = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(window)
window.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)
当我执行它时,工具栏不会显示图标'document-open'.这是一个错误还是我做错了什么?
谢谢
# -*- coding: utf-8 -*-
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class MainWindow(QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.setFixedWidth(200)
self.setFixedHeight(200)
stylesheet = \
".QWidget {\n" \
+ "border: 20px solid black;\n" \
+ "border-radius: 4px;\n" \
+ "background-color: rgb(255, 255, 255);\n" \
+ "}"
self.setStyleSheet(stylesheet)
if __name__ == '__main__':
app = QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
我想用样式表添加边框到自定义小部件,但样式表似乎不起作用,有什么不对吗?
python ×8
pyqt ×7
pyqt4 ×5
qt-designer ×2
resize ×2
aspect-ratio ×1
asyncore ×1
config ×1
icons ×1
image ×1
ipv6 ×1
layout ×1
logging ×1
newline ×1
pyqt5 ×1
python-2.7 ×1
qt4 ×1
qtablewidget ×1
qtreeview ×1
qtreewidget ×1
urllib2 ×1