2013-02-25 44 views
1

我在使用tkinter插件時遇到了問題。 我在我的本地系統中使用ubuntu 12.10桌面,我安裝了python 2.7和3.2 我在OpenERP中使用了tkinter插件,它在我的本地PC上正常工作。 但問題是,當使用相同的代碼在服務器(Ubuntu的12.04服務器)它不工作使用Ubuntu服務器的Python Tkinter問題

它顯示

self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk,sync, use) 
TclError: no display name and no $DISPLAY environment variable 

我在終端蟒蛇也檢查它說錯誤就意味着有問題tkinter 某處我不知道。 我也檢查過tkinter和python版本都很好。 但我發現一些不尋常的東西,而在終端定位tkinter。 在本地它顯示tkinter插件位於python3.2, 但在服務器中它不顯示tkinter

我檢查了權限也很好。 如何使tkinter在Ubuntu服務器上工作12.04

+0

請問您的服務器計算機實際上有一個顯示器(正在運行的X服務器)? – sloth 2013-02-25 08:17:30

+0

是的,我安裝了xserver(xinit),也是Ubuntu的桌面 – senthilnathang 2013-02-26 06:21:27

回答

2

如果包含完整的回溯和更大的代碼提取,本來會很好。正如Dominic指出的那樣,錯誤消息意味着Tkinter無法找到您的X圖形環境,這可能意味着您正在無代理服務器上運行代碼。 您可以嘗試在服務器上安裝X,但如果機器真的是沒有用戶界面的服務器,則不需要GUI。

如果您確實需要在代碼執行時顯示GUI,那麼它不應該在服務器端運行,或者您需要將X11轉發到客戶端計算機。然而,在OpenERP環境中,這似乎沒有什麼意義 - 因爲它對於所有用戶來說都很難以通用的方式工作。

現在你可能使用matplotlib來生成圖形(你的代碼提取沒有顯示)?如果是,您可以簡單地強制它使用無頭後端來生成圖像,如questionother question中所述。

嘗試有渲染代碼調用之前執行以下代碼:

import matplotlib 
import matplotlib.pyplot 

# force headless backend, or set 'backend' to 'Agg' 
# in your ~/.matplotlib/matplotlibrc 
matplotlib.use('Agg') 

# force non-interactive mode, or set 'interactive' to False 
# in your ~/.matplotlib/matplotlibrc 
matplotlib.pyplot.ioff() 

參見以下參考資料:

+0

謝謝你的回覆我會在這裏檢查和發佈結果 – senthilnathang 2013-02-26 06:40:27

+1

我在線編輯器中檢查了python中的matplot,它再次表示同樣的錯誤(matplotlib後端使用tkinter) – senthilnathang 2013-02-26 06:44:24

0

我只是對於那些sti也有同樣的問題我們感興趣的是:現有的答案几乎是正確的,但順序很重要:您需要在pyplot之前調用matplotlib.use 之前 pyplot。

這爲我工作:

import matplotlib 
# force headless backend, or set 'backend' to 'Agg' 
# in your ~/.matplotlib/matplotlibrc 
matplotlib.use('Agg') 

import matplotlib.pyplot 
# force non-interactive mode, or set 'interactive' to False 
# in your ~/.matplotlib/matplotlibrc 
matplotlib.pyplot.ioff()