Есть ли способ использовать Tkinter с Google Colab Laboratory? - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть код, в котором я пробую разные виджеты Tkinter, но Colab отправляет сообщение об ошибке, в котором говорится, что нет отображаемого имени или переменной. Точное сообщение об ошибке выглядит примерно так:

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

Есть ли способ обойти это? Код выглядит примерно так:

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()

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Нет.

От заставки до Google Colab:

Записные книжки Colab выполняют код на облачных серверах Google

На серверах обычно даже нет дисплея. И даже если бы они имели, вы бы этого не увидели. Чтобы использовать tkinter.

, вам придется запустить Python на своем настольном компьютере или ноутбуке. Кроме того, среда colab представляет собой форму ноутбука I Python, которая на самом деле не является стандартной средой Python , Я бы не рекомендовал пытаться запускать tkinter программы с ноутбука I Python, даже если у вас Python работает локально.

0 голосов
/ 12 апреля 2020

Как Запустить gym-gazebo в Google Colab Laboratory говорит, что вам нужно запустить сервер кадрового буфера (который будет эмулировать графический экран) и создать envvar DISPLAY, указывающий на него.

!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 не поддерживает интерактивные экраны из коробки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...