小编kyn*_*kos的帖子

我在哪里可以找到tkinter的API文档?

我正在寻找Python 模块的完整在线参考tkinter.我试图自己找一个,但出于某种原因,我不能.

为了澄清,我不是在寻找一个教程.相反,我希望有一个所有可用类和属性的参考.

例如,如果我写这段代码:

from tkinter import *
root = Tk()
root.title("My title")
Run Code Online (Sandbox Code Playgroud)

我想知道:Tk该类接受实例化的可选参数是什么?Tk对象的属性和方法是什么?什么参数title接受?等等...

显然,"看来源"不是这个问题的答案.

python tkinter

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

使用Python'with'语句时捕获异常 - 第2部分

这是一个问题的延续使用Python'with'语句捕获异常.
我是新手,我在GNU/linux上使用Python 3.2测试了以下代码.

在上述问题中,提出了类似于此的内容,以便从"with"语句中捕获异常:

try:
    with open('foo.txt', 'a'):
        #
        # some_code
        #
except IOError:
    print('error')
Run Code Online (Sandbox Code Playgroud)

这让我想知道:如果some_code引发IOError而没有捕获它会发生什么?它显然被外部的"除外"声明所吸引,但这可能不是我真正想要的.
你可以说好,只需用另一个try-except包装some_code,依此类推,但我知道异常可以来自任何地方,并且不可能保护每一段代码.
总而言之,我只是想打印'错误',当且仅当open('foo.txt','a')引发异常时,所以我在这里问为什么以下代码不是标准的建议方式这样做:

try:
    f = open('foo.txt', 'a')
except IOError:
    print('error')

with f:
    #
    # some_code
    #

#EDIT: 'else' statement is missing, see Pythoni's answer
Run Code Online (Sandbox Code Playgroud)

谢谢!

python exception-handling exception with-statement

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

设置ttk Combobox的默认值

我在Arch Linux x86_64中使用Python 3.2.1.这个真的让我发疯了:我只想在ttk.Combobox网格上有一个默认的预选值.这是我的代码:

from tkinter import Tk, StringVar, ttk

root = Tk()

def combo(parent):
    value = StringVar()
    box = ttk.Combobox(parent, textvariable=value, state='readonly')
    box['values'] = ('A', 'B', 'C')
    box.current(0)
    box.grid(column=0, row=0)

combo(root)

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

这画空了Combobox.有趣的是,如果我不使用某个功能,它可以很好地工作:

from tkinter import Tk, StringVar, ttk

root = Tk()

value = StringVar()
box = ttk.Combobox(root, textvariable=value, state='readonly')
box['values'] = ('A', 'B', 'C')
box.current(0)
box.grid(column=0, row=0)

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

当然,在真正的程序中我必须使用一个函数,所以我需要另一个解决方案.

python combobox tkinter ttk python-3.x

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

Python,日志记录:使用自定义处理程序和字典配置?

这是关于Python 3.2(GNU/Linux x86_64)上的日志记录模块:是否可以使用字典配置设置自定义处理程序?这是我正在尝试的代码:

import logging
import logging.config

class CustomHandler(logging.StreamHandler):
    pass

logconfig = {
    'version': 1,
    'handlers': {
        'console': {
            'class': 'CustomHandler',
        }
    },
    'loggers': {
        'custom': {
            'handlers': ['console'],
        }
    }
}
logging.config.dictConfig(logconfig)
logger = logging.getLogger('custom')
logger.error('Error message')
Run Code Online (Sandbox Code Playgroud)

这当然不起作用.这是输出:

Traceback (most recent call last):
  File "/usr/lib/python3.2/logging/config.py", line 390, in resolve
    found = self.importer(used)
ImportError: No module named CustomHandler

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.2/logging/config.py", line 569, in configure …
Run Code Online (Sandbox Code Playgroud)

python configuration logging dictionary handler

7
推荐指数
1
解决办法
4150
查看次数

Python:打开压缩的SQLite数据库

在Python中,是否有某种或多或少的方法可以打开压缩的SQLite数据库而不必在某个地方写入临时文件?

就像是:

import bz2
import sqlite3

dbfile = bz2.BZ2File("/path/to/file.bz2", "wb")
dbconn = sqlite3.connect(dbfile)

cursor = dbconn.cursor()
...
Run Code Online (Sandbox Code Playgroud)

这当然引起了:

ValueError: database parameter must be string or APSW Connection object
Run Code Online (Sandbox Code Playgroud)

谢谢!

python database compression sqlite

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

python:sys.argv [0]在官方文档中的含义

docs.python.org引用:

" sys.argv传递给Python脚本的命令行参数列表.argv[0]是脚本名称(它是依赖于操作系统的,无论这是否是完整路径名.)如果命令是使用-c解释器的命令行选项执行的,argv[0]则设置为字符串'-c'.如果没有脚本名称传递给Python解释器,argv[0]则为空字符串."

我错过了什么,或者sys.argv[0]总是返回脚本名称,并且'-c'我必须使用sys.argv[1]

我在GNU/Linux上使用Python 3.2进行测试.

python sys argv

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

python:如何在带有队列的线程之间共享sqlite连接?

我在 Arch Linux x86_64 上使用 Python 3.2.1。
我正在尝试使用一些类似于以下代码的线程定时循环更新 sqlite 数据库:

import sqlite3
from threading import Timer
from queue import Queue

class DBQueue(Queue):
    def give(self, item):
        self.task_done()
        self.join()
        self.put(item)
        return True


def timer():
    print('A')
    Timer(3, add).start()


def add():
    print('B')
    db = qdb.get()
    cur = db.cursor()
    cur.execute('INSERT INTO Foo (id) VALUES (NULL)')
    qdb.give(db)
    timer()

qdb = DBQueue()
# SOLUTION #1:
# qdb.put(sqlite3.connect(':memory:', check_same_thread=False))
# SOLUTION #2: see Eli Bendersky's answer
qdb.put(sqlite3.connect(':memory:'))
db = qdb.get()
cur = db.cursor()
cur.execute('CREATE TABLE Foo (id INTEGER …
Run Code Online (Sandbox Code Playgroud)

python sqlite queue multithreading timer

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

python:我需要了解更好的导入和包

我的应用程序具有与此类似的结构:

myapp.py
basemod.py
[pkg1]
    __init__.py
    mod1.py
[pkg2]
    __init__.py
    mod2.py
Run Code Online (Sandbox Code Playgroud)

myapp.py:

import pkg1
import pkg2

if __name__ == '__main__':
    pkg1.main()
    pkg2.main()
Run Code Online (Sandbox Code Playgroud)

basemod.py:

import pkg1


def get_msg():
    return pkg1.msg
Run Code Online (Sandbox Code Playgroud)

pkg1/__init__.py:

import mod1

msg = None


def main():
    global msg
    mod1.set_bar()
    msg = mod1.bar
Run Code Online (Sandbox Code Playgroud)

pkg1/mod1.py:

bar = None


def set_bar():
    global bar
    bar = 'Hello World'
Run Code Online (Sandbox Code Playgroud)

pkg2/__init__.py:

import mod2


def main():
    mod2.print_foo()
Run Code Online (Sandbox Code Playgroud)

pkg2/mod2.py:

import basemod

foo = basemod.get_msg()


def print_foo():
    print(foo)
Run Code Online (Sandbox Code Playgroud)

如果我跑,myapp.py我得到:

None
Run Code Online (Sandbox Code Playgroud)

在我看来,我期待:

Hello …
Run Code Online (Sandbox Code Playgroud)

python import package

2
推荐指数
1
解决办法
135
查看次数