首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有什么方法可以使用Tkinter与谷歌的竞争吗?

有什么方法可以使用Tkinter与谷歌的竞争吗?
EN

Stack Overflow用户
提问于 2020-04-12 07:37:09
回答 2查看 33.1K关注 0票数 11

我有一个代码,在这里我尝试不同的Tkinter小部件,但是Colab发回一个错误,说没有显示名称或变量。确切的错误消息如下所示:

代码语言:javascript
运行
复制
TclError                                  Traceback (most recent call last)
<ipython-input-5-7b43f8be599d> in <module>()
----> 1 form = tk.Tk()
   /usr/lib/python3.6/tkinter/__init__.py in __init__(self, screenName, baseName, className, useTk, sync, use)
   2021                 baseName = baseName + ext
   2022         interactive = 0
-> 2023         self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
   2024         if useTk:
   2025             self._loadtk()
TclError: no display name and no $DISPLAY environment variable

有办法解决这个问题吗?代码是这样的:

代码语言:javascript
运行
复制
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
from tkinter import filedialog
def fOpen(): 
    print(filedialog.askopenfilename(initialdir = "/",title = "Open file",filetypes = (("Python files","*.py;*.pyw"),("All files","*.*"))))
def ExitF(): 
    form.destroy()
def fSave(): 
    print(filedialog.asksaveasfilename(initialdir = "/",title = "Save as",filetypes = (("Python files","*.py;*.pyw"),("All files","*.*"))))
form = tk.Tk()
form.title("Colab Form")
menubar = tk.Menu(form)
filemenu = tk.Menu(menubar,tearoff=0)
filemenu.add_command(label="Open", command = fOpen)
filemenu.add_command(label="Save", command = fSave)
filemenu.add_command(label="Exit", command = ExitF)
menubar.add_cascade(label="File", menu=filemenu)
form.config(menu=menubar)
#Listbox with attached scrollbar
scrollbar=tk.Scrollbar(form)
mylist = tk.Listbox(form, yscrollcommand = scrollbar.set )
for line in range(100):
   mylist.insert("end", "This is line number " + str(line))
mylist.grid(row=7,column=1,rowspan=3, sticky='e', padx=25, pady=25)
scrollbar.config( command = mylist.yview )
scrollbar.grid(row=7, column=2, rowspan=3, sticky='nsw', padx=25, pady=25)
form.mainloop()
EN

回答 2

Stack Overflow用户

发布于 2020-04-12 07:53:34

正如运行健身房-在谷歌竞技场上露台所说,您需要运行一个框架缓冲区服务器(它将模拟一个图形屏幕)并创建一个指向它的DISPLAY envvar。

代码语言:javascript
运行
复制
!apt-get install -y xvfb # Install X Virtual Frame Buffer
import os
os.system('Xvfb :1 -screen 0 1600x1200x16  &')    # create virtual display with size 1600x1200 and 16 bit color. Color can be changed to 24 or 8
os.environ['DISPLAY']=':1.0'    # tell X clients to use our virtual DISPLAY :1.0

但是,如果您想要与GUI交互,这将是困难的,因为Colab不支持开箱即用的交互式屏幕。

票数 8
EN

Stack Overflow用户

发布于 2020-04-12 08:12:08

No.

简介到google:

Colab笔记本在Google云服务器上执行代码

服务器通常连显示器都没有。即使他们看到了,你也不会看到。您必须在台式机或膝上型计算机上运行Python才能使用tkinter

此外,colab环境是IPython笔记本的一种形式,它实际上不是一个标准的Python环境。即使您在本地运行tkinter,我也不建议尝试从IPython笔记本上运行IPython程序。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61168210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档