标签: tkinter

为什么我的Python通过家庭酿造安装不包括Tkinter

我在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)

python macos tkinter

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

将命令行结果重定向到tkinter GUI

我创建了一个在命令行上打印结果的程序.(它是服务器,它在命令行上打印日志.)

现在,我希望看到与GUI相同的结果.

如何将命令行结果重定向到GUI?

请提出一个技巧,以便轻松将控制台应用程序转换为简单的GUI.

请注意,它应该适用于Linux和Windows.

python user-interface tkinter

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

为什么Tkinter Entry的函数返回什么?

我正在尝试使用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 get tkinter python-3.x tkinter-entry

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

如何在Tkinter中更改Frame的背景?

我一直在使用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)

python background tkinter frame python-3.x

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

Python - 在一个单独的子进程或线程中运行Autobahn | Python asyncio websocket服务器

我有一个基于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)

python tkinter autobahn python-asyncio

21
推荐指数
2
解决办法
9426
查看次数

如何使用tkinter创建多行条目?

Entry小部件似乎只处理单行文本.我需要一个多行输入字段来输入电子邮件.

任何人都知道如何做到这一点?

python tkinter input multiline

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

修改Python Tkinter中的默认字体

我正在使用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}

(没有错误,但没有任何改变!)

我做错了什么?

python tkinter python-2.7

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

Tkinter - 无法绑定箭头键事件

我试图将左右箭头键绑定到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)

为什么这不起作用?

python tkinter

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

找不到tkinter的匹配分布

自从过去两天以来我一直坚持这个问题,我已经在堆栈和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 …

python module tk-toolkit tkinter

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

在Ubuntu上的python3.6中安装tkinter

+--------+-----------------------------------+
|   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 tkinter tcl python-3.x python-3.6

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