我在Mac上通过自制软件安装了我的Python.
brew install python
Run Code Online (Sandbox Code Playgroud)
之后我将我的python版本检查为2.7.11,然后我尝试了执行
import Tkinter
Run Code Online (Sandbox Code Playgroud)
我有以下错误消息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 39, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named _tkinter
Run Code Online (Sandbox Code Playgroud) 我创建了一个在命令行上打印结果的程序.(它是服务器,它在命令行上打印日志.)
现在,我希望看到与GUI相同的结果.
如何将命令行结果重定向到GUI?
请提出一个技巧,以便轻松将控制台应用程序转换为简单的GUI.
请注意,它应该适用于Linux和Windows.
我正在尝试使用Entry字段来获取手动输入,然后使用该数据.
我发现的所有消息都声称我应该使用该get()功能,但我还没有找到一个简单的工作迷你示例,我无法让它工作.
我希望有人可以告诉我我做错了什么.这是一个迷你文件:
from tkinter import *
master = Tk()
Label(master, text="Input: ").grid(row=0, sticky=W)
entry = Entry(master)
entry.grid(row=0, column=1)
content = entry.get()
print(content) # does not work
mainloop()
Run Code Online (Sandbox Code Playgroud)
这给了我一个Entry我可以输入的字段,但是一旦输入数据,我就无法对数据做任何事情.
我怀疑我的代码不起作用,因为最初entry是空的.但是,一旦输入数据,我该如何访问输入数据?
我一直在使用Python 3.3中的Tkinter 创建一个电子邮件程序.在各种网站上,我一直看到Frame小部件可以使用不同的背景Frame.config(background="color").但是,当我在我的Frames中使用它时,它会出现以下错误:
_tkinter.TclError: unknown option "-Background"
Run Code Online (Sandbox Code Playgroud)
执行以下操作时,它不起作用:
frame = Frame(root, background="white")
Run Code Online (Sandbox Code Playgroud)
要么:
frame = Frame(root)
frame.config(bg="white")
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚.我会发布我的整个源代码,但我不希望它暴露在互联网上,但框架创建是这样的:
mail1 = Frame(self, relief=SUNKEN)
mail1.pack()
mail1.place(height=70, width=400, x=803, y=109)
mail1.config(Background="white")
Run Code Online (Sandbox Code Playgroud)
我尝试了多种选择来修改背景.框架就像包装收件箱的电子邮件预览一样.
如果需要,这就是我导入模块的方式:
import tkinter, time, base64, imaplib, smtplib
from imaplib import *
from tkinter import *
from tkinter.ttk import *
Run Code Online (Sandbox Code Playgroud)
以下是完整的追溯:
Traceback (most recent call last):
File "C:\Users\Wessel\Dropbox\Python\Main\Class Ginomail.py", line 457, in <module>
main()
File "C:\Users\Wessel\Dropbox\Python\Main\Class Ginomail.py", line 453, in main
app = Application(root) #start the application with …Run Code Online (Sandbox Code Playgroud) 我有一个基于tkinter的GUI程序在Python 3.4.1中运行.我在程序中运行了几个线程来从各个URL获取JSON数据.我想添加一些WebSocket功能,以便能够允许程序充当服务器,并允许多个客户端通过WebSocket连接到它并交换其他JSON数据.
我正在尝试使用Autobahn | Python WebSocket服务器进行asyncio.
我首先尝试在GUI程序下的单独线程中运行asyncio事件循环.但是,每次尝试都会产生'AssertionError:线程'Thread-1'中没有当前事件循环.
然后,我尝试使用标准库多处理程序包生成一个进程,该程序包在另一个进程中运行asyncio事件循环.当我尝试这个时,我没有得到任何异常,但WebSocket服务器也没有启动.
甚至可以在另一个Python程序的子进程中运行asyncio事件循环吗?
有没有办法将asyncio事件循环集成到当前多线程/ tkinter程序中?
更新 下面是我尝试运行初始测试的实际代码.
from autobahn.asyncio.websocket import WebSocketServerProtocol
from autobahn.asyncio.websocket import WebSocketServerFactory
import asyncio
from multiprocessing import Process
class MyServerProtocol(WebSocketServerProtocol):
def onConnect(self, request):
print("Client connecting: {0}".format(request.peer))
def onOpen(self):
print("WebSocket connection open.")
def onMessage(self, payload, isBinary):
if isBinary:
print("Binary message received: {0} bytes".format(len(payload)))
else:
print("Text message received: {0}".format(payload.decode('utf8')))
## echo back message verbatim
self.sendMessage(payload, isBinary)
def onClose(self, wasClean, code, reason):
print("WebSocket connection closed: {0}".format(reason))
def start_server():
factory = WebSocketServerFactory("ws://10.241.142.27:6900", debug = False) …Run Code Online (Sandbox Code Playgroud) Entry小部件似乎只处理单行文本.我需要一个多行输入字段来输入电子邮件.
任何人都知道如何做到这一点?
我正在使用Tkinter在Python2.7中使用GUI,我有一个恼人的问题.
我想定义所有小部件使用的默认字体,如果可能的话,在一行中.此行仅修改Entry或ComboBox中使用的字体:
root.option_add("*Font", "courier 10")
Run Code Online (Sandbox Code Playgroud)
但不是示例复选框的标签.
我发现预定义的字体存在"TkDefaultFont",但我无法更改其配置:
print tkFont.Font(font='TkDefaultFont').configure()
tkFont.Font(font='TkDefaultFont').config(family='Helvetica', size=20)
tk.TkDefaultFont = tkFont.Font(family="Helvetica",size=36,weight="bold")
print tkFont.Font(font='TkDefaultFont').configure()
Run Code Online (Sandbox Code Playgroud)
回报:
{'family':'DejaVu Sans','weight':'normal','slant':'roman','overstrike':0,'underline':0,'size': - 12} {'family': 'DejaVu Sans','weight':'normal','slant':'roman','overstrike':0,'underline':0,'size': - 12}
(没有错误,但没有任何改变!)
我做错了什么?
我试图将左右箭头键绑定到Tkinter中的事件,但是当我运行程序时,它似乎没有触发事件.这是代码:
from Tkinter import *
main = Tk()
def leftKey(event):
print "Left key pressed"
def rightKey(event):
print "Right key pressed"
frame = Frame(main, width=100, height=100)
frame.bind('<Left>', leftKey)
frame.bind('<Right>', rightKey)
frame.pack()
frame.mainloop()
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?
自从过去两天以来我一直坚持这个问题,我已经在堆栈和github上尝试了所有可能的解决方案.如果有人可以推荐,真的很棒.
我在CentOS Linux版本7.3.1611的虚拟环境中使用python 2.7.
我正在运行一个使用matplotlib.pyplot的脚本,并在运行时出现此错误
import matplotlib.pyplot as plt
File "/usr/local/packages/Python-2.7/lib/python2.7/lib-tk/Tkinter.py", line 39, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named _tkinter
Run Code Online (Sandbox Code Playgroud)
我尝试使用 - 安装tkinter
pip install tkinter and it gave this error
Could not find a version that satisfies the requirement tkinter (from versions: )
No matching distribution found for tkinter
Run Code Online (Sandbox Code Playgroud)
然后我甚至安装 -
sudo yum install tk
sudo yum install tk-devel
sudo yum install tc
Run Code Online (Sandbox Code Playgroud)
并说它已经安装了包 nothing …
+--------+-----------------------------------+
| OS | Ubuntu 12.04 |
+--------+-----------------------------------+
| Python | 2.7, 3.2 and source installed 3.6 |
+--------+-----------------------------------+
Run Code Online (Sandbox Code Playgroud)
由于Python 3有两个版本,因此从存储库安装的任何内容都不适用于Python 3.6.存储库中最新版本的Python是3.2,因此我需要源安装或通过pip3.6.
启动后python3.6我尝试了import tkinter,这给出了以下错误.即使help('modules')返回了包含tkinter的模块列表.
import tkinter
ModuleNotFoundError: No module named '_tkinter'
Run Code Online (Sandbox Code Playgroud)
我尝试过同样的做法python3.2并且没有错误. tkinter._tkinter给出了python3.2的tkinter库的位置
我进入了python3.6包含所有库文件的目录,实际上它丢失了tkinter.so目标文件.
我该如何修复错误?
我想让tkinter/tkagg工作,因为它似乎已经安装了所有模块/包.
谷歌搜索后,我发现我需要python3.6再次构建,但这次运行配置时使用Tcl/Tk选项.我宁愿不.python3.6从头开始安装需要1小时左右.
还有其他方法可以告诉我python3.6Tcl/Tk的位置吗?
问题不是告诉python tcl/tk在哪里.搞乱python3.6的源代码,然后将python3.6与python3.2进行比较后,我发现tkinter调用_tkinter而不是python文件,它是python在安装过程中构建的.so(共享对象)文件通过使用gcc的setup.py,它可能会涉及到distutils.
新的更合适的问题是如何_tkinter.cpython-36m-i386-linux-gnu.so从tcl/tk 构建
?
注意:我确实安装了tcl/tk,我已经使用tclsh和wish确认了.
python ×10
tkinter ×10
python-3.x ×3
autobahn ×1
background ×1
frame ×1
get ×1
input ×1
macos ×1
module ×1
multiline ×1
python-2.7 ×1
python-3.6 ×1
tcl ×1
tk-toolkit ×1