小编Fen*_*kso的帖子

for循环中的python变量的范围

下面是我遇到问题的python代码:

for i in range (0,10):
    if i==5:
        i+=3
    print i
Run Code Online (Sandbox Code Playgroud)

我期望输出为:

0
1
2
3
4
8
9
Run Code Online (Sandbox Code Playgroud)

然而翻译吐出:

0
1
2
3
4
8
6
7
8
9
Run Code Online (Sandbox Code Playgroud)

我知道for循环为C中的变量创建了一个新的作用域,但不知道python.任何人都可以解释为什么python i中的for循环中没有变化的值,并且为了获得预期的输出有什么补救措施.

python scope for-loop

34
推荐指数
4
解决办法
3万
查看次数

Jinja2正确缩进包含块

我有两个文件:

base.html文件

<!DOCTYPE html>
<html>
    <head>
       <meta charset="UTF-8">
       <title>{{title}}</title>
    </head>
    <body>
       {% block content %}
       {% endblock %}   
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

register.html

{% extends "base.html" %}
{% block content %}
<h1>Register</h1>
<form action="" method="post" name="register">
    {{ form.hidden_tag() }}
    {{ form.login.label }} {{ form.login(size=20) }}
    {{ form.password.label }} {{ form.password(size=20) }}
    <input type="submit" value="Register">
</form>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

它像这样呈现:

<!DOCTYPE html>
<html>
    <head>
       <meta charset="UTF-8">
       <title>Register</title>
    </head>
    <body>

<h1>Register</h1>
<form action="" method="post" name="register">
    <div style="display:none;"><input id="csrf_token" name="csrf_token" type="hidden" value="1393257771.168161##ce877b3519f192c05d3b409f3b7b07bb147dead7"></div>
    <label for="login">login</label> <input …
Run Code Online (Sandbox Code Playgroud)

jinja2 flask

28
推荐指数
2
解决办法
2万
查看次数

即使测试通过,也要让鼻子测试跑步者显示记录

nosetests test.py用来运行单元测试:

import unittest
import logging


class Test(unittest.TestCase):
    def test_pass(self):
        logging.getLogger('do_not_want').info('HIDE THIS')
        logging.getLogger('test').info('TEST PASS')
        self.assertEqual(True, True)

    def test_fail(self):
        logging.getLogger('do_not_want').info('HIDE THIS')
        logging.getLogger('test').info('TEST FAIL')
        self.assertEqual(True, False)
Run Code Online (Sandbox Code Playgroud)

当测试失败时,它会打印出所有日志记录信息.我可以使用--logging-filter只提取一些记录器:

nosetests test.py --verbosity=2 --logging-filter=test
test_fail (test.Test) ... FAIL
test_pass (test.Test) ... ok

======================================================================
FAIL: test_fail (test.Test)
----------------------------------------------------------------------
Traceback (most recent call last):
  File ".../test.py", line 14, in test_fail
    self.assertEqual(True, False)
AssertionError: True != False
-------------------- >> begin captured logging << --------------------
test: INFO: TEST FAIL
--------------------- >> end captured logging << …
Run Code Online (Sandbox Code Playgroud)

python logging unit-testing nose

24
推荐指数
1
解决办法
6885
查看次数

让Parsley 2.x正确使用Bootstrap 3

我使用Twitter Bootstrap 3.1.1Parsley v2.0.0-rc3.我做的主要是除了classHandler选项之外的工作.

我有这样的HTML:

<div class="form-group">
    <label class="control-label" for="username">User Name</label>
    <input class="form-control" id="username" name="username" required="" type="text" value="">   
</div>
Run Code Online (Sandbox Code Playgroud)

像这样运行欧芹:

$("#register_form").parsley({
    successClass: "has-success",
    errorClass: "has-error",
    classHandler: function(el) {
        return $(el).closest(".form-group");
    },
    errorsWrapper: "<span class='help-block'></span>",
    errorTemplate: "<span></span>"
});
Run Code Online (Sandbox Code Playgroud)

一切正常,但成功/错误类应用于错误的元素.页面加载后,我得到这个:

<div class="form-group">
    <label class="control-label" for="username">User Name</label>
    <input class="form-control" id="username" name="username" required="" type="text" value="" data-parsley-id="5043">
    <span class="help-block" id="parsley-id-5043"></span>
</div>
Run Code Online (Sandbox Code Playgroud)

验证后,结果如下:

<div class="form-group">
    <label class="control-label" for="username">User Name</label>
    <input class="form-control has-error" id="username" name="username" required="" type="text" value="" data-parsley-id="5043">
    <span class="help-block …
Run Code Online (Sandbox Code Playgroud)

javascript jquery twitter-bootstrap parsley.js twitter-bootstrap-3

18
推荐指数
1
解决办法
5868
查看次数

如何在GCC 4.4.1中打印64位整数?

我正在使用Code :: Blocks with GCC 4.4.1,我似乎无法从我的C代码中打印64位有符号整数.

这段代码:

long long longint;

longint = 0x1BCDEFABCDEFCDEF; /* 2003520930423229935 */
printf("Sizeof: %d-bit\n", sizeof(longint) * 8);     /* Correct */
printf("%llx\n", longint);                           /* Incorrect */
printf("%x%x\n", *(((int*)(&longint))+1), longint);  /* Correct */
printf("%lld\n", longint);                           /* Incorrect */ 
Run Code Online (Sandbox Code Playgroud)

产生输出:

Sizeof: 64-bit
cdefcdef
1bcdefabcdefcdef
-839922193
Run Code Online (Sandbox Code Playgroud)

64位算术似乎正常工作:

longint -= 0x1000000000000000;
printf("%x%x\n", *(((int*)(&longint))+1), longint);
Run Code Online (Sandbox Code Playgroud)

得到:

bcdefabcdefcdef
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

c gcc codeblocks

13
推荐指数
3
解决办法
4万
查看次数

使用virtualenv或Python运行mod_wsgi,其版本与系统默认版本不同

我想让我的Flask应用程序在CentOS服务器上运行.基本上问题是我安装了Python 2.6,/usr/bin其中安装了系统默认和Python 3.4 /usr/local/bin.我想使用Python 3.4 virtualenv或至少Python 3.4解释器来运行我的应用程序mod_wsgi.

我已经创建了virtualenv ~/virtualenvs/flask.

我有这个WSGI脚本:

import os
import sys
from logging import Formatter, FileHandler

APP_HOME = r"/home/fenikso/Album"


activate_this = os.path.join("/home/fenikso/virtualenvs/flask/bin/activate_this.py")
execfile(activate_this, dict(__file__=activate_this))

sys.path.insert(0, APP_HOME)
os.chdir(APP_HOME)

from app import app

handler = FileHandler("app.log")
handler.setFormatter(Formatter("[%(asctime)s | %(levelname)s] %(message)s"))
app.logger.addHandler(handler)
application = app
Run Code Online (Sandbox Code Playgroud)

并在Apache中配置以下:

<VirtualHost *:80>
        ServerName album2.site.cz
        Alias /static "/home/fenikso/Album/static"
        Alias /photos "/home/fenikso/Album/photos"
        Alias /thumbs "/home/fenikso/Album/thumbs"
        WSGIScriptAlias / "/home/fenikso/Album/wsgi.py"
        <Directory "/home/fenikso/Album">
            AllowOverride None
            Allow from all
        </Directory>
        <Directory "/home/fenikso/Album/static">
            AllowOverride None
            Allow from …
Run Code Online (Sandbox Code Playgroud)

python apache mod-wsgi flask

12
推荐指数
1
解决办法
1万
查看次数

在GUI中处理未处理的异常

我主要是为精通技术的人编写一个小工具,例如程序员,工程师等.由于这些工具通常会随着时间的推移而快速改进,我知道会有未处理的异常并且用户不会介意.我希望用户能够向我发送回溯,以便我可以检查发生了什么并可能改进应用程序.

我经常做wxPython编程,但最近我做了一些Java.我已经TaskDialog上课了Thread.UncaughtExceptionHandler(),我对结果非常满意.特别是它可以捕获和处理来自任何线程的异常:

在此输入图像描述

在此输入图像描述

我在wxPython中做了类似的事情很长一段时间.然而:

  1. 我不得不写一个装饰器 - 黑客,以便能够很好地打印来自另一个线程的异常.
  2. 即使功能正常,结果也很难看.

在此输入图像描述

这是Java和wxPython的代码,所以你可以看到我做了什么:

Java的:

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.JButton;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import com.ezware.dialog.task.TaskDialogs;

public class SwingExceptionTest {

    private JFrame frame;

    public static void main(String[] args) {

        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
        catch (ClassNotFoundException e) {
        }
        catch (InstantiationException e) {
        }
        catch (IllegalAccessException e) {
        }
        catch (UnsupportedLookAndFeelException e) {
        }

        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
            public void uncaughtException(Thread t, Throwable e) { …
Run Code Online (Sandbox Code Playgroud)

python java swing wxpython exception

10
推荐指数
1
解决办法
1048
查看次数

Linux上的cx_freeze PyGObject应用程序

我有一个简单的PyGObject应用程序:

from gi.repository import Gtk


class Window(Gtk.Window):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.set_border_width(5)

        self.button = Gtk.Button('Test')

        self.box = Gtk.Box()
        self.box.pack_start(self.button, True, True, 0)

        self.add(self.box)
        self.connect('delete-event', Gtk.main_quit)
        self.show_all()


win = Window()
Gtk.main()
Run Code Online (Sandbox Code Playgroud)

我试图在Linux上使用cx_freeze使用以下setup.py脚本冻结它:

from cx_Freeze import setup, Executable

setup(name="GUI Test",
      description="GUITest",
      version="0.1",
      options={"build_exe": {"build_exe": "Bin/pygobject",
                             "create_shared_zip": False,
                             }},
      executables=[Executable(script="hello_pygobject.py",
                              targetName="hello",
                              appendScriptToExe=True,
                              )]
      )
Run Code Online (Sandbox Code Playgroud)

而我正在运行它: python3 setup_pygobject.py build

当我尝试运行冻结的应用程序时,我收到以下错误消息:

(process:22538): Gtk-CRITICAL **: gtk_settings_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

我可能在目录中缺少一堆库,例如他们已经解释过Windows.我试图pmap找到丢失的库.作为最后的手段,我还尝试将/usr/lib64/(+其他一些我不记得的)的所有库复制到工作目录中.

有一个很好的方法如何找到我需要的库或一些更好的方法来解决它? …

python linux pygobject cx-freeze

8
推荐指数
1
解决办法
522
查看次数

在QLabel上设置自动换行会打破窗口的大小限制

我有以下代码:

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

TEXT = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " \
       "Nullam malesuada tellus in ex elementum, vitae rutrum enim vestibulum."

#==============================================================================
class Window(QWidget):
    def __init__(self, *args, **kwargs):
        QWidget.__init__(self, *args, **kwargs)

        # Widgets
        self.label = QLabel(TEXT, self) 
#         self.label.setWordWrap(True)    
        self.text = QTextEdit(self)
        self.text.setMinimumSize(480, 320)
        self.text.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)

        # Layout
        self.layout = QGridLayout()
        self.layout.addWidget(self.label, 0, 0)
        self.layout.addWidget(self.text, 1, 0)
        self.layout.setContentsMargins(5, 5, 5, 5)
        self.layout.setSpacing(5)

        self.setLayout(self.layout)   

        self.adjustSize() …
Run Code Online (Sandbox Code Playgroud)

python qt pyqt

6
推荐指数
1
解决办法
5264
查看次数

Tkinter 文本小部件。取消选择文本

我使用了一个 Text 小部件,Tkinter当按下按钮时,它会将选定的文本复制到剪贴板。现在在复制过程之后,我想取消选择文本。知道这可能如何工作吗?

由于似乎有必要发布一些代码,以便人们更详细地了解我的问题,这里是:

def copy_to_clipboard(self, copy_string):
    #copy to clipboard function
    self.clipboard_clear()
    try:
        #text in outputlistfield marked, so copy that
        self.clipboard_append(self.outputlistfield.get("sel.first", "sel.last"))
    except:
        #no text marked
Run Code Online (Sandbox Code Playgroud)

outputlistfield是一个文本小部件。如果选择文本,则应将其复制到剪贴板。这很好用。但我想重置选择,以便在复制文本后不再选择文本。那么,有什么建议吗?

python text tkinter widget

5
推荐指数
1
解决办法
1929
查看次数