将Python外壳程序移植到Tkinter GUI

将Python外壳程序移植到Tkinter GUI,python,tkinter,Python,Tkinter,我已经研究了可能回答我问题的类似问题,但我仍然不清楚如何进行以下工作: 我可以创建在pythonshell中空闲时运行的程序,也可以在Tkinter中使用widget设置窗口,但是我在Tkinter中创建的任何东西都是毫无意义的,因为我不知道如何获取pythonshell代码并在Tkinter GUI中“包装”它 我认为这是不可能的,必须编写全新的代码来辅助Tkinter特有的语言。我很困惑如何创建一个全面的程序,而不只是一个带有随机按钮、标签、条目等的GUI“框架”,以及一个非常没有吸引力且只

我已经研究了可能回答我问题的类似问题,但我仍然不清楚如何进行以下工作:

我可以创建在pythonshell中空闲时运行的程序,也可以在Tkinter中使用widget设置窗口,但是我在Tkinter中创建的任何东西都是毫无意义的,因为我不知道如何获取pythonshell代码并在Tkinter GUI中“包装”它


我认为这是不可能的,必须编写全新的代码来辅助Tkinter特有的语言。我很困惑如何创建一个全面的程序,而不只是一个带有随机按钮、标签、条目等的GUI“框架”,以及一个非常没有吸引力且只能在丑陋的小外壳中运行的Python程序。

使用Tkinter创建的程序并非毫无意义。在我看来,您似乎正在尝试用Python编译一个独立的程序,使用Tkinter库来提供GUI。脚本运行后,可以使用程序编译成独立程序。研究在mac上使用
py2app
,或在Windows上使用
py2exe
。用谷歌搜索它们,看看这是否是您想要的。

将应用程序从命令行移植到GUI可能需要一些返工(取决于您想要实现的交互程度)

基本上,在GUI应用程序中,您在启动时构建一些小部件(按钮…),然后根据用户输入的“反应”执行所有操作。通常通过将回调绑定到小部件(按钮、输入字段)上,然后输入mainloop(或eventloop)来实现。 你可以看看这个


如果您的应用程序主要面向计算,那么提供一个带有“启动”按钮的gui和一个输出字段就很简单了。如果您执行一些命令行输入,您可以以低成本切换到小部件输入。更多的交互式应用程序需要针对交互功能进行架构。

非常感谢Dave!我以后肯定需要py2app,但这是否允许我运行python程序,而不让一些输出显示在tkinter窗口中,而让其他输出显示在python shell中?根据我对py2app的研究,让我们冻结或几乎编译我的程序,尤其是为了发布目的。-1主题外,海报问题与打包/发布无关。如果我理解正确,您说GUI的目的是代码样式所依赖的。我认为问题与打包有关。如果您编译了程序,用户将通过双击图标来运行它。当这种情况发生时,您编写的Tkinter窗口将打开,就这样。不会有终端外壳,也不会打开其他窗口(当然,除非您告诉程序)。这意味着用户将看不到
print
语句之类的内容(这些将转到错误记录器,如mac上的Console)。用户将只看到Tkinter窗口中发生的情况。这就是GUI的目的,允许用户以图形方式与您的程序交互。如果GUI的目的是让用户不使用命令行(您称之为python shell)。如果您的程序仍然是一个脚本(因此您可以在命令行中使用
python script.py
),并且您有GUI代码,那么GUI和命令行都将是可见的。如果编译脚本,则用户不会从命令行启动脚本,只有GUI窗口可见。我希望这有助于你的理解。很难理解你已经做到了什么以及你想要完成什么。也许你可以提供一个例子(最好不是你所有的代码,而是有意义的部分)来说明你迄今为止所做的尝试;本质上是“GUI的用途是什么?”。