本文概述
尽管有很多用于python的UI框架, 但是其中大多数并不是那么容易使用和实现。至少对于不是python语言的编程初学者而言, 这不是为什么, 因此今天我们要介绍如何使用appJar包使用最常见的UI元素(如Dropbox, 单选框, 文本输入, 按钮等)创建基本用户界面。蟒蛇。
什么是appJar
appJar是教师在教室中为学生编写的有用软件包。 appJar设计为可在尽可能多的Python版本上运行, 因此它几乎可以在任何地方运行。没有其他依赖项, 因此你只需下载, 解压缩并将其放入代码文件夹中即可。使用appJar创建基本交互界面的操作非常简单, 非常棒, 它使其成为学习如何使用Python进行编码的最佳软件包之一, 也非常适合你不需要未来派UI的非常简单的程序。
Python本身很难实现GUI, 因此, 如果你是想开始使用python并为简单应用程序创建自己的UI的初学者, appJar是最可靠的解决方案之一。
1.安装appJar
appJar的首选安装方法是通过pip。打开终端并运行以下命令:
python -m pip install appjar
安装后, 你可以随时更新软件包:
python -m pip install appjar --upgrade
而且你显然可以从python代码导入appJar命名空间。有关这个很棒的库的更多信息, 请在此处访问Github的官方存储库或访问官方网站。
2.使用AppJar
与许多其他用于可视化GUI设计的工具(例如Visual Studio)不同, 你将需要使用纯代码(即每行一行)构建自己的GUI。 AppJar提供了很多组件, 因此在此处列出它们是不合适的。这就是为什么我们仅描述该库的功能以及使用起来很容易的原因。
- 设计尽可能简单, 但仍提供许多tkinter功能
- 为大多数窗口小部件提供3个功能:
- add(name, value)这会添加一个新的小部件(通常带有一个名称和一个值)
- set(name, value)这将更新命名小部件的值
- get(name)这将获取命名小部件的值
- 使用网格布局
- 添加小部件时, 最多可以提供4个数字”位置”:
- column-要显示的列, 从0开始
- row-要出现的行, 从0开始
- columnspan-跨越多少列
- rowspan-向下扩展多少行
- 在核心tkinter之外提供额外的零碎负载
- 其中一些来自@ http://effbot.org的优秀资源
- 其中一些来自于如何解决常见问题的斜线示例
- 其中一些已从其他人的模块中合并:
- 迈克尔·兰格(Michael Lange)的工具提示
- Johann C.Rocholl的tkinter_png支持
- Martin J. Fiedler的NanoJPEG库
- 我试图在不使用任何其他模块的情况下, 尽可能多地在该库中获取功能
使用UI初始化应用程序可以很简单, 如以下代码所示:
# import the library
from appJar import gui
# create a GUI variable called app
app = gui()
# add & configure widgets - widgets get a name, to help referencing them later
app.addLabel("title", "Welcome to appJar")
app.setLabelBg("title", "red")
# start the GUI
app.go()
这使得该库非常容易通过简单的脚本使用。
例子
以下示例实现了一个非常基本的登录表单, 该表单遵循具有某些自定义方法(它们不遵循任何模式)的类结构应用程序。要运行它, 请创建一个新的python文件, 即main.py, 并将以下内容放入其中:
# main.py
from appJar import gui
# Example of a semi-structured application
class MyApplication():
# Build the GUI
def Prepare(self, app):
# Form GUI
app.setTitle("Login Form")
app.setFont(16)
app.setStopFunction(self.BeforeExit)
# Add labels & entries
# in the correct row & column
app.addLabel("userLab", "Username:", 0, 0)
app.addEntry("username", 0, 1)
app.addLabel("passLab", "Password:", 1, 0)
app.addSecretEntry("password", 1, 1)
app.addButtons( ["Submit", "Cancel"], self.Submit, colspan=2)
return app
# Build and Start your application
def Start(self):
# Creates a UI
app = gui()
# Run the prebuild method that adds items to the UI
app = self.Prepare(app)
# Make the app class-accesible
self.app = app
# Start appJar
app.go()
# Callback execute before quitting your app
def BeforeExit(self):
return self.app.yesNoBox("Confirm Exit", "Are you sure you want to exit the application?")
# Define method that is executed when the user clicks on the submit buttons
# of the form
def Submit(self, btnName):
if btnName == "Submit":
username = self.app.getEntry("username")
password = self.app.getEntry("password")
# Very stupid login system (both strings equal to ourcodeworld)
if username and password == "ourcodeworld":
self.app.infoBox("Logged in", "You are now logged in !")
else:
self.app.errorBox("Error", "Your credentials are invalid !")
# Run the application
# `python main.py`
if __name__ == '__main__':
# Create an instance of your application
App = MyApplication()
# Start your app !
App.Start()
然后, 使用以下命令在终端中运行脚本:
python main.py
这将使用你的基本用户界面启动一个新窗口, 如下图所示:
编码愉快!
评论前必须登录!
注册