Python可以在多个平台上运行,可以用于桌面和Web应用程序,因此我得出结论,有一些方法可以将它编译成Mac,Windows和Linux的可执行文件.
问题是我不知道从哪里开始或如何用它来编写GUI,任何人都可以对此有所了解并指出我正确的方向吗?
我想导入Tkinter.但是,我收到一条错误,指出尚未安装Tkinter:
ImportError:没有名为_tkinter的模块,请安装python-tk包
我可以使用synaptic manager安装它(可以吗?),但是,我必须在我编程的每台机器上安装它.是否可以将Tkinter库添加到我的工作区并从那里引用它?
我尝试在Windows 10上通过Pycharm IDE使用matplotlib包.当我运行此代码时:
from matplotlib import pyplot
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ImportError: No module named 'tkinter'
Run Code Online (Sandbox Code Playgroud)
我知道在python 2.x中它被称为Tkinter,但这不是问题 - 我刚刚安装了一个全新的python 3.5.1.
编辑:此外,我还尝试导入'tkinter'和'Tkinter' - 这些都没有工作(两者都返回了我提到的错误信息).
有任何想法吗?提前致谢
出于某种原因,我无法使用Tkinter或tkinter模块.在python shell中运行以下命令后
import Tkinter
Run Code Online (Sandbox Code Playgroud)
要么
import tkinter
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误
import Tkinter
Run Code Online (Sandbox Code Playgroud)
要么
import tkinter
Run Code Online (Sandbox Code Playgroud)
可能是什么原因以及我们如何解决它?
我在服务器中运行一个简单的python脚本:
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(60)
y = np.random.randn(60)
plt.scatter(x, y, s=20)
out_png = 'path/to/store/out_file.png'
plt.savefig(out_png, dpi=150)
Run Code Online (Sandbox Code Playgroud)
我尝试python example.py在这个安装了matplotlib 1.5.1的服务器中使用该命令失败并显示错误:
Traceback (most recent call last):
File "example.py", line 7, in <module>
plt.scatter(x, y, s=20)
File "/home/USER/.virtualenvs/nnet/lib/python2.7/site-packages/matplotlib/pyplot.py", line 3241, in scatter
ax = gca()
File "/home/USER/.virtualenvs/nnet/lib/python2.7/site-packages/matplotlib/pyplot.py", line 928, in gca
return gcf().gca(**kwargs)
File "/home/USER/.virtualenvs/nnet/lib/python2.7/site-packages/matplotlib/pyplot.py", line 578, in gcf
return figure()
File "/home/USER/.virtualenvs/nnet/lib/python2.7/site-packages/matplotlib/pyplot.py", line 527, in figure
**kwargs)
File "/home/USER/.virtualenvs/nnet/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 84, in new_figure_manager …Run Code Online (Sandbox Code Playgroud) 假设我Button在Python中使用Tkinter进行了以下操作:
import Tkinter as Tk
win = Tk.Toplevel()
frame = Tk.Frame(master=win).grid(row=1, column=1)
button = Tk.Button(master=frame, text='press', command=action)
Run Code Online (Sandbox Code Playgroud)
action当我按下按钮时调用该方法,但是如果我想将一些参数传递给方法action怎么办?
我尝试过以下代码:
button = Tk.Button(master=frame, text='press', command=action(someNumber))
Run Code Online (Sandbox Code Playgroud)
这只是立即调用方法,按下按钮什么都不做.
我在这里重新绘制数字时遇到问题.我允许用户在时间刻度(x轴)中指定单位,然后重新计算并调用此函数plots().我希望情节简单地更新,而不是在图中附加另一个情节.
def plots():
global vlgaBuffSorted
cntr()
result = collections.defaultdict(list)
for d in vlgaBuffSorted:
result[d['event']].append(d)
result_list = result.values()
f = Figure()
graph1 = f.add_subplot(211)
graph2 = f.add_subplot(212,sharex=graph1)
for item in result_list:
tL = []
vgsL = []
vdsL = []
isubL = []
for dict in item:
tL.append(dict['time'])
vgsL.append(dict['vgs'])
vdsL.append(dict['vds'])
isubL.append(dict['isub'])
graph1.plot(tL,vdsL,'bo',label='a')
graph1.plot(tL,vgsL,'rp',label='b')
graph2.plot(tL,isubL,'b-',label='c')
plotCanvas = FigureCanvasTkAgg(f, pltFrame)
toolbar = NavigationToolbar2TkAgg(plotCanvas, pltFrame)
toolbar.pack(side=BOTTOM)
plotCanvas.get_tk_widget().pack(side=TOP)
Run Code Online (Sandbox Code Playgroud) 以下是我典型的python tkinter程序的整体结构.
def funA():
def funA1():
def funA12():
# stuff
def funA2():
# stuff
def funB():
def funB1():
# stuff
def funB2():
# stuff
def funC():
def funC1():
# stuff
def funC2():
# stuff
root = tk.Tk()
button1 = tk.Button(root, command=funA)
button1.pack()
button2 = tk.Button(root, command=funB)
button2.pack()
button3 = tk.Button(root, command=funC)
button3.pack()
Run Code Online (Sandbox Code Playgroud)
funA funB当用户点击按钮1,2,3时,funC将显示Toplevel带有小部件的另一个窗口.
我想知道这是否是编写python tkinter程序的正确方法?当然,即使我这样写,它也会起作用,但这是最好的方法吗?这听起来很愚蠢但是当我看到其他人编写的代码时,他们的代码并没有被大量的函数弄乱,而且大多数都有类.
我们应该遵循哪些具体结构作为良好做法?在开始编写python程序之前我应该如何计划?
我知道编程中没有最佳实践,我也不是要求它.我只是想要一些建议和解释,让我保持正确的方向,因为我自己学习Python.
我的小弟弟正在进入编程,而在他的科学博览会项目中,他正在模拟天空中的一群鸟.他已经完成了大部分代码编写工作,并且工作得很好,但是鸟类需要每时每刻都在移动.
然而,Tkinter占用了自己的事件循环的时间,所以他的代码不会运行.做root.mainloop()运行,运行和继续运行,它运行的唯一事情是事件处理程序.
有没有办法让他的代码与mainloop一起运行(没有多线程,这很混乱,这应该保持简单),如果是这样,它是什么?
现在,他想出了一个丑陋的黑客,把他的move()功能绑在一起<b1-motion>,所以只要他按住按钮并摆动鼠标,就可以了.但必须有一个更好的方法.
如何在Python Tkinter程序中处理窗口关闭事件(用户单击"X"按钮)?
python ×10
tkinter ×10
matplotlib ×3
events ×2
arguments ×1
button ×1
deployment ×1
install ×1
linux ×1
python-3.x ×1
window ×1