我打电话的时候
self.client = ThreadedClient()
Run Code Online (Sandbox Code Playgroud)
在我的Python程序中,我收到错误
"RuntimeError:主线程不在主循环中"
我已经做了一些谷歌搜索,但我在某种程度上犯了错误...有人可以帮助我吗?
完整错误:
Exception in thread Thread-1:
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 530, in __bootstrap_inner
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 483, in run
File "/Users/Wim/Bird Swarm/bird_swarm.py", line 156, in workerGuiThread
self.root.after(200, self.workerGuiThread)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 501, in after
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1098, in _register
RuntimeError: main thread is not in main loop
Run Code Online (Sandbox Code Playgroud)
类别:
class ThreadedClient(object):
def __init__(self):
self.queue = Queue.Queue( )
self.gui = GuiPart(self.queue, self.endApplication)
self.root = self.gui.getRoot()
self.running = True
self.GuiThread = threading.Thread(target=self.workerGuiThread) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Python中的Tkinter显示一个打开的文件对话框.我发现的每个例子看起来都很容易使用,但它们都是从这一行开始的:
import tkFileDialog
Run Code Online (Sandbox Code Playgroud)
这行告诉我一个错误,说
No module named 'tkFileDialog'
Run Code Online (Sandbox Code Playgroud)
似乎我的Python没有tkFileDialog.所以我尝试搜索它,但似乎你没有"下载"Tkinter,它只是附带Python. 为什么我的Tkinter缺少tkFileDialog?有什么地方我可以获得它,以便我可以使用它吗?
我想到的另一件事是它可能已经改变了名字,因为我读过的例子都是写的.tkFileDialog在Python 3中有不同的导入方式吗?
我正在运行Windows 7 64位Python版本
3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:45:13) [MSC v.1600 64 bit (AMD64)]
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
我有这个美丽的球体,我在matplotlib.我如何将它放入tkinter框架小部件?能够将它集成到现有的tkinter GUI中会很高兴.还可以摆脱显示屏下方的菜单栏吗?我没有必要保存输出或缩放,所以对我来说没用.
from mpl_toolkits.mplot3d import axes3d,Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
fig = plt.figure()
ax = Axes3D(fig) #<-- Note the difference from your original code..
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = 10 * np.outer(np.cos(u), np.sin(v))
y = 10 * np.outer(np.sin(u), np.sin(v))
z = 10 * np.outer(np.ones(np.size(u)), np.cos(v))
ax.plot_surface(x, y, z, rstride=4, cstride=4, color='lightgreen',linewidth=0)
#,antialiased=False
#cmap=cm.jet
plt.show()
Run Code Online (Sandbox Code Playgroud) 是否有关于何时应该使用包装与网格布局的最佳实践提示?
从我通过谷歌阅读的内容来看,似乎是网格可以处理任何包装方案但反之亦然.
为了开始对话,似乎有一个有利于网格与包的用例是当人们想要显示/隐藏小部件时.
我有一个python-tkinter gui应用程序,我一直试图找到一些方法来添加一些功能.我希望有一种方法可以右键单击应用程序列表框区域中的项目并显示上下文菜单.tkinter能够完成这个吗?看看gtk或其他一些gui-toolkit我会更好吗?
有没有一个例子说明如何在Python中设置日志记录到Tkinter Text Widget?我已经看到这在几个应用程序中使用,但无法弄清楚如何将日志记录指向除日志文件之外的任何其他内容.
他们的版本中的Tcl和Tk 8.6已经出现了大约六个星期.但是,可以从Tcl下载的文件具有不同的文件夹结构,并且缺少某些文件,例如tk85.lib(或tk86.lib现在)与Python中的Tcl文件夹相比.
我的问题是:如何在Python中将Tcl和Tk更新为8.6(包括集成到Tkinter)?
Python版本为2.7,操作系统为Windows 7.
我正在使用一个教程中的示例文件,要求我先做两个导入:
from tkinter import *
from tkinter import ttk
Run Code Online (Sandbox Code Playgroud)
我收到一个错误.我研究了一下,发现在python 2.7.x中我需要将't'in tkinter大写,所以我改为:
from Tkinter import *
from Tkinter import ttk.
Run Code Online (Sandbox Code Playgroud)
第一行不再给出错误,但我仍然得到错误:
ImportError: cannot import name ttk.
Run Code Online (Sandbox Code Playgroud)
我在这个网站和其他地方研究过这个问题,似乎无法理解这个ttk是什么.我进一步感到困惑的是,当我去python解释器,然后输入"help()",然后输入"modules",然后"ttk"它似乎知道它是什么,并给了我很多例如:"说明此模块提供允许使用Tk主题窗口小部件集的类." - 但是,python不会让我导入它.
我正在克服这个错误的困难时期,我已经到处搜索该错误消息,似乎与我的情况无关:
"failed to execute script new-app"
Run Code Online (Sandbox Code Playgroud)
new-app是我的python GUI程序.当我使用此命令运行pyinstaller时:
pyinstaller.exe --onedir --hidden-import FileDialog --windowed --noupx new-app.py
Run Code Online (Sandbox Code Playgroud)
它运作顺利.另外,当我执行命令行来运行gui程序时,它运行正常,并使用以下命令生成GUI:
.\dist\new-app\new-app.exe
Run Code Online (Sandbox Code Playgroud)
但是当我去那个文件希望能够点击应用程序来获取GUI时,它会给我上面说的错误.这是为什么?
我使用的是python2.7,操作系统是Windows 7企业版.
任何输入将受到赞赏,并提前感谢.
我一直在寻找不同的网站,试图找出tkinter的重量.我从TkDocs那里得到了这个:
每个列和行都有一个与它关联的"权重"网格选项,告诉它如果要填充的主空间中有额外的空间,它应该增长多少.默认情况下,每列或每行的权重为0,表示不扩展以填充空间.
有人可以把它放在我的某些背景下,因为我很难理解它的作用.我已经尝试了以下代码,它似乎只是在我更改值时在页面上移动东西.
try:
import tkinter
except ImportError: # python 2
import Tkinter as tkinter
import os
mainWindow = tkinter.Tk()
mainWindow.title("Grid demo")
mainWindow.geometry('640x480-8-200')
label = tkinter.Label(mainWindow, text="tkinter grid demo")
label.grid(row=0, column=0, columnspan=3)
mainWindow.columnconfigure(0, weight=1)
mainWindow.columnconfigure(1, weight=1)
mainWindow.columnconfigure(2, weight=3)
mainWindow.columnconfigure(3, weight=3)
mainWindow.columnconfigure(4, weight=3)
mainWindow.rowconfigure(0, weight=1)
mainWindow.rowconfigure(1, weight=10)
mainWindow.rowconfigure(2, weight=1)
mainWindow.rowconfigure(3, weight=3)
mainWindow.rowconfigure(4, weight=3)
fileList = tkinter.Listbox(mainWindow)
fileList.grid(row=1, column=0, sticky='nsew', rowspan=2)
fileList.config(border=2, relief='sunken')
for zone in os.listdir('/Windows/System32'):
fileList.insert(tkinter.END, zone)
mainWindow.mainloop()
Run Code Online (Sandbox Code Playgroud) python ×10
tkinter ×10
ttk ×2
contextmenu ×1
layout ×1
logging ×1
matplotlib ×1
pyinstaller ×1
python-3.x ×1
tcl ×1
tk-toolkit ×1
windows ×1