小编I_d*_*hon的帖子

有没有办法通过 python 3 将任务添加到 Windows 任务调度程序?

我有一个生成 GUI 的主要 python 脚本,通过该 GUI,我希望用户能够创建、修改和删除由 Windows 任务计划程序管理的计划。

python python-3.x

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

tkinter.TclError:图像"pyimage3"不存在

我在屏幕上显示两秒钟的图像功能时出现问题,然后被破坏.当程序运行函数时,初始调用程序运行正常,但如果函数随后通过tkinter中内置的按钮调用,则会出现错误.

appcwd = os.getcwd()
user32 = ctypes.windll.user32
screensize = user32.GetSystemMetrics(0), user32.GetSystemMetrics(1)
size = str(screensize[0])+'x'+str(screensize[1])

def wlcm_scrn(event=None):
    def destroy_wlcm(event=None):
        wlcm_scrn.destroy()
    global appcwd
    global screensize
    wlcm_scrn = tkinter.Tk()
    file=appcwd+"\\Run_Files\\splash.gif"
    splsh_img = tkinter.PhotoImage(file=file) 
    splosh = tkinter.Label(wlcm_scrn,image=splsh_img)
    wlcmh = splsh_img.height()/2
    wlcmw = splsh_img.width()/2
    splosh.pack()
    wlcm_scrn.config(bg='black')
    wlcm_scrn.overrideredirect(True)
    wlcm_scrn.bind("<Escape>",destroy_wlcm)
    wlxym = '+'+str(int((screensize[0]/2)-wlcmw))+'+'+str(int((screensize[1]/2)-wlcmh))
    wlcm_scrn.geometry(wlxym)
    wlcm_scrn.wm_attributes("-topmost", 1)
    wlcm_scrn.after(2000,destroy_wlcm)
    wlcm_scrn.mainloop()

wlcm_scrn() #Call through procedure.
Run Code Online (Sandbox Code Playgroud)

调用该函数的按钮.

view_img = tkinter.Button(cfrm,text='Show splash image',command=wlcm_scrn)
Run Code Online (Sandbox Code Playgroud)

通过按钮命令调用时出现错误消息.

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python33\lib\tkinter\__init__.py", line 1475, in __call__
    return self.func(*args)
  File …
Run Code Online (Sandbox Code Playgroud)

python windows tkinter python-3.x

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

cx_freeze 没有名为“pkg_resources”的模块

我在 Windows 8.1 上使用 Python 3.3.5 和 cx-freeze 4.3.3。

我正在尝试 cx_freeze 一个使用 pkg_resources 的程序。

我最初将它放在包下的安装文件中,但是当我尝试冻结它时,进程因错误而停止Import Error: No module named 'pkg_resources'

在此处输入图片说明

然后我将它在安装文件中从包移动到包含。这次 cx_freeze 进程完成了,但是当我尝试启动应用程序时,我收到了另一条错误消息。

在此处输入图片说明

如果我去我的 IDE 并尝试导入 pkg_resources 它工作正常。

>>> import pkg_resources
>>> pkg_resources
<module 'pkg_resources' from 'C:\\Python33\\lib\\site-packages\\setuptools-18.0.1-py3.3.egg\\pkg_resources\\__init__.py'>
Run Code Online (Sandbox Code Playgroud)

这里问一个类似的问题解决方法是重新安装setuptools。所以我下载了 setuptools 18.0.1 并通过 cmd 安装了它,但它没有解决我的问题,我仍然遇到与 cx_freeze 相同的错误。

任何帮助使其正常工作将不胜感激。

编辑:我的解决方案(hack)是从 yagmail 中编写依赖项。Yagmail 的原始 _innit__.py...

from pkg_resources import get_distribution
__project__ = 'yagmail'
__version__ = get_distribution(__project__).version
Run Code Online (Sandbox Code Playgroud)

我首先在那里放了一个打印语句来获取版本,然后对其进行硬编码。

__project__ = 'yagmail'
__version__ = '0.4.84'
Run Code Online (Sandbox Code Playgroud)

虽然这解决了我的问题,但它并不是真正的答案,所以如果有人有一个保留 pkg_resources.

python pkg-resources cx-freeze python-3.x

6
推荐指数
0
解决办法
1102
查看次数

UnboundLocalError:赋值前引用的局部变量'error'

我已经查看了有关此特定错误的其他问题,但在这些情况下,在该过程中存在一条路径,其中变量从未定义,因此在稍后调用时会失败.但是在我的程序中,我在try方法之前设置变量,在某些条件下在try方法中更改这些变量,然后if语句稍后调用它们但是失败.当Python到达if语句并尝试创建变量文本时,它声明变量error和error1未定义(在赋值之前引用).

err = 0
error = 'No Error Set'
error1 = 'No Error1 Set'
try:
    conn = sqlite3.connect(db_dir)
    for row in conn.execute("select max(date) from eod"):
       mxdate = row
    if mxdate == None:
        pass
    else:
        for row in conn.execute('select date, status from eod where date = ?',(mxdate,)):
            _lst_eod = row
    for row in conn.execute("select * from temp"):
        _crnt_eod = row
    conn.close()
except Exception as error:
    error = str(error)
    err = 1
    logged = 0
    try:
        conn.close()
        time = str(right_datetime())[11:19].replace(':','')
        conn = …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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

Python:创建删除线/删除线/重击字符串类型

我希望在创建一个迭代字符串并将每个字符与删除线字符(\ u0336)组合在一起的函数时提供一些帮助.输出是原始字符串的删除版本.像这样..

就像是.

def strike(text):
    i = 0
    new_text = ''
    while i < len(text):
        new_text = new_text + (text[i] + u'\u0336')
        i = i + 1
    return(new_text)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我只能连接而不是结合.

python python-3.x

3
推荐指数
3
解决办法
6841
查看次数

如何从tkinter OptionMenu获取列表变量?

我正在尝试从OptionMenupython3.3中的tkinter小部件获取列表变量.

小部件是这样写的;

list1 = ['One', 'Two', 'Three']
var1 = tkinter.StringVar()
var1.set(list1[0])

window = tkinter.Tk()
my_opmenu = tkinter.OptionMenu(window, var1, *list1)
my_opmenu.grid()
window.mainloop()
Run Code Online (Sandbox Code Playgroud)

我知道您可以使用该cget()方法来检索窗口小部件的配置,我认为在OptionMenu窗口小部件的上下文中my_opmenu是我需要调用的设置.但是当我打电话给它时,我会得到一些看起来像记忆位置的东西.

print(my_opmenu.cget('menu'))
>>.24620080.24620272.25126224.25126352.25126736.menu
Run Code Online (Sandbox Code Playgroud)

显然,内存位置不是恒定的.有什么方法可以让人类的价值回归(即list1).

python tkinter python-3.x

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

tkinter'NonType'对象没有属性'pack'(仍然有效?)

我是Python的新手,刚刚开始使用tkinter.运行下面的代码我得到一个属性错误but1.pack()(NoneType对象没有属性pack).但据我所知,这个错误对窗口的功能没有任何影响,它仍然pack是按钮.窗口仍然出现,所有按钮都按预期运行.

搜索我可以看到其他人有这个错误,但没有给出的答案解决了我的问题.希望你能提供帮助.

代码:

import tkinter
import ctypes
lst=[]

user32 = ctypes.windll.user32
screensize = user32.GetSystemMetrics(0), user32.GetSystemMetrics(1)

def closewindow():
    window.destroy()
def btn1():
    lst.append("Button1")
def btn2():
    lst.append("Button2")

window = tkinter.Tk()

size = str(screensize[0])+'x'+str(screensize[1])
window.geometry(size)

but1 = tkinter.Button(window, text="Button1", command=btn1).grid(column = 1, row = 1)
but2 = tkinter.Button(window, text="Button2", command=btn2).grid(column = 2, row = 1)
ext = tkinter.Button(window, text="Stop", command=closewindow).grid(column = 3, row = 1)

but1.pack()
but2.pack()
ext.pack()

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

回调;

Traceback (most recent call last):
  File …
Run Code Online (Sandbox Code Playgroud)

python windows windows-xp tkinter python-3.x

0
推荐指数
1
解决办法
9469
查看次数

使用 python 应用程序嵌入数据库的最简单方法

将数据库添加到 python 应用程序的最简单方法是什么,以便在编译然后安装在另一台计算机上时不需要安装单独的 dbms?

python database python-3.x

0
推荐指数
1
解决办法
723
查看次数

在 Python 中,我可以在运行时更改类的结构吗?

在 Python 中,您可以像这样在运行时将新的实例变量添加到类的实例中...

>> class Foo:
>>     def __init__(self, bar):
>>         self.bar = bar
>> 
>> f = Foo()
>> setattr(f, "baz", "spam")
>> f.baz
"spam"
Run Code Online (Sandbox Code Playgroud)

...但它只对 instance 有影响,f对 class 没有影响foo

>> x = Foo()
>> x.baz
AttributeError: 'Foo' object has no attribute 'baz'
Run Code Online (Sandbox Code Playgroud)

有没有办法将新的实例变量添加baz到类中Foo,以便该类的所有新实例都具有新变量?

python monkeypatching

0
推荐指数
1
解决办法
53
查看次数