我正在从*.ui文件加载QMainWIndow基础.此外,我有一个自定义小部件,我想放在窗体上的某个地方.目前我在.ui文件中放入一个空QVBoxLayout命名placeholder,并在QMainWindow子类中执行self.placeholder.addWidget(my_custom_widget)
在这种方法中我唯一不喜欢的是空布局没有自己的大小.我可以有一个布局一个细胞,并用虚拟控件(QLabel例如)与我想要的大小,更换这个小工具,然后添加我的自定义窗口小部件,但该方法似乎对我来说太多.
你完成这项任务的方法是什么?
我正在使用Python(PyQt4)
我需要填写一个文件,其中包含许多由数字标识的记录(测试数据).记录的数量非常大,而且ID应该是唯一的,记录的顺序应该是随机的(或伪随机的).
我试过这个:
# coding: utf-8
import random
COUNT = 100000000
random.seed(0)
file_1 = open('file1', 'w')
for i in random.sample(xrange(COUNT), COUNT):
file_1.write('ID{0},A{0}\n'.format(i))
file_1.close()
Run Code Online (Sandbox Code Playgroud)
但它正在吃掉我所有的记忆.
有没有办法生成一个连续的大洗牌序列(不一定但它会很好,否则是唯一的)整数?使用发生器而不是将所有序列保留在RAM中?
Python导入让我发疯(我在某些时候使用python导入的经验根本不符合'明确比隐含更好':():
[app]
start.py
from package1 import module1
[package1]
__init__.py
print('Init package1')
module1.py
print('Init package1.module1')
from . import module2
module2.py
print('Init package1.module2')
import sys, pprint
pprint.pprint(sys.modules)
from . import module1
Run Code Online (Sandbox Code Playgroud)
我明白了:
vic@ubuntu:~/Desktop/app2$ python3 start.py
Init package1
Init package1.module1
Init package1.module2
{'__main__': <module '__main__' from 'start.py'>,
...
'package1': <module 'package1' from '/home/vic/Desktop/app2/package1/__init__.py'>,
'package1.module1': <module 'package1.module1' from '/home/vic/Desktop/app2/package1/module1.py'>,
'package1.module2': <module 'package1.module2' from '/home/vic/Desktop/app2/package1/module2.py'>,
...
Traceback (most recent call last):
File "start.py", line 3, in <module>
from package1 import module1
File "/home/vic/Desktop/app2/package1/module1.py", line 3, …Run Code Online (Sandbox Code Playgroud) $ ./runtests.py -v tests/managers/test_customer.py:CustomerManagerTest.test_register_without_subscription --ipdb
...
test_register_without_subscription (tests.managers.test_customer.CustomerManagerTest) ...
- TRACEBACK --------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python2.7/unittest/case.py", line 331, in run
testMethod()
File "*****/tests/managers/test_customer.py", line 198, in test_register_without_subscription
1/0
ZeroDivisionError: integer division or modulo by zero
--------------------------------------------------------------------------------
> *****/tests/managers/test_customer.py(198)test_register_without_subscription()
197 def test_register_without_subscription(self):
--> 198 1/0
199 ...
ipdb> import sys
ipdb> sys.exc_info()
(<type 'exceptions.AttributeError'>, AttributeError("Pdb instance has no attribute 'do_sys'",), <traceback object at 0x47eb908>)
ipdb>
Run Code Online (Sandbox Code Playgroud)
我找不到任何ipdb help显示当前异常的命令.
做import sys; print sys.exc_info()不起作用.
目前我这样做:
try:
do_something_that_raises_an_exception() …Run Code Online (Sandbox Code Playgroud) 报废网站时,我收到服务器的302响应:
2014-04-01 21:31:51+0200 [ahrefs-h] DEBUG: Redirecting (302) to <GET http://www.domain.com/Site_Abuse/DeadEnd.htm> from <GET http://domain.com/wps/showmodel.asp?Type=15&make=damc&a=664&b=51&c=0>
Run Code Online (Sandbox Code Playgroud)
我想向GET网址发送请求,而不是重定向.现在我找到了这个中间件:
https://github.com/scrapy/scrapy/blob/master/scrapy/contrib/downloadermiddleware/redirect.py#L31
我将此重定向代码添加到我的middleware.py文件中,然后将其添加到settings.py中:
DOWNLOADER_MIDDLEWARES = {
'street.middlewares.RandomUserAgentMiddleware': 400,
'street.middlewares.RedirectMiddleware': 100,
'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': None,
}
Run Code Online (Sandbox Code Playgroud)
但我仍然被重定向.这是我为了让这个中间件工作所必须做的吗?我错过了什么吗?
我正在使用Go-Json-Rest开发JSON Web服务.我正在写测试.
...
recorded = test.RunRequest(t, &api.Handler,
test.MakeSimpleRequest("POST", "http://localhost/api/products",
product))
recorded.CodeIs(201)
recorded.ContentTypeIsJson()
var newProduct Product
err := recorded.DecodeJsonPayload(&newProduct)
if err != nil {
t.Fatal(err)
}
...
Run Code Online (Sandbox Code Playgroud)
我正在使用,Fatal因为我来自Python世界,assert它将立即停止测试用例方法执行.这是有道理的:为什么尝试解码数据,如果它不是JSON?
但是recorded.CodeIs(201),recorded.ContentTypeIsJson()和我见过的其他测试一样Error,并没有停止测试执行.
我应该在测试中使用什么?Error还是Fatal?
所以现在我们有很多python脚本,我们正在尝试整合它们并修复和裁员.我们要做的一件事是确保所有sys.stdout/sys.stderr进入python日志记录模块.
现在最重要的是,我们希望打印出以下内容:
[<ERROR LEVEL>] | <TIME> | <WHERE> | <MSG>
Run Code Online (Sandbox Code Playgroud)
现在所有的python错误消息中的所有sys.stdout/sys.stderr消息的格式都是[LEVEL] - MSG,它们都是使用sys.stdout/sys.stderr编写的.我可以在我的sys.stdout包装器和sys.stderr包装器中解析这个问题.然后根据解析的输入调用相应的日志记录级别.
所以基本上我们有一个名为foo的包,以及一个名为log的子包.在__init__.py我们定义以下内容:
def initLogging(default_level = logging.INFO, stdout_wrapper = None, \
stderr_wrapper = None):
"""
Initialize the default logging sub system
"""
root_logger = logging.getLogger('')
strm_out = logging.StreamHandler(sys.__stdout__)
strm_out.setFormatter(logging.Formatter(DEFAULT_LOG_TIME_FORMAT, \
DEFAULT_LOG_TIME_FORMAT))
root_logger.setLevel(default_level)
root_logger.addHandler(strm_out)
console_logger = logging.getLogger(LOGGER_CONSOLE)
strm_out = logging.StreamHandler(sys.__stdout__)
#strm_out.setFormatter(logging.Formatter(DEFAULT_LOG_MSG_FORMAT, \
# DEFAULT_LOG_TIME_FORMAT))
console_logger.setLevel(logging.INFO)
console_logger.addHandler(strm_out)
if stdout_wrapper:
sys.stdout = stdout_wrapper
if stderr_wrapper:
sys.stderr = stderr_wrapper
def cleanMsg(msg, is_stderr = False):
logy = logging.getLogger('MSG')
msg = msg.rstrip('\n').lstrip('\n')
p_level …Run Code Online (Sandbox Code Playgroud) 我写了一个插件,发送一个信号来激活我的代码.但是,它不会将用户请求对象发送到我的代码.我正在寻找一种方法来检索当前请求而无需修改主应用程序.我找不到任何与全局请求相关的文档(比如$_SERVER['REMOTE_ADDR']在PHP中).
我想知道在Python/Django中是否有任何变量可以做.
这个程序不编译:
package main
type Validator struct {
}
// Error implements error interface
func (v *Validator) Error() string {
return ""
}
func test() error {
return &Validator{}
}
func main() {
switch test().(type) {
case nil:
println("No error")
case Validator:
println("Validation error")
return
default:
println("Unknown error")
return
}
}
Run Code Online (Sandbox Code Playgroud)
错误是:
prog.go:19: impossible type switch case: test() (type error) cannot have dynamic type Validator (missing Error method)
Run Code Online (Sandbox Code Playgroud)
但Validator结构有方法Error.
我有一个描述符
class ReferredItem():
def __init__(self, method):
self.method = method
def __get__(self, obj, objtype):
...
Run Code Online (Sandbox Code Playgroud)
我用它作装饰:
class MyClass():
@ReferredItem
some_method(self):
...
Run Code Online (Sandbox Code Playgroud)
我见过装饰器是小写的.但是应该用驼峰的方式命名类.
我应该把这个名字命名为referred_item?或者保持现状?