第一个应用¶
下面带你一步步创建第一个 Charmy 应用。
1. 导入 Charmy¶
import charmy as cm
2. 创建窗口¶
有两种方式创建窗口:
window = cm.Window(size=(400, 300), title="Window Title")
Window 继承自 WindowEntity (后端窗口实体)+ Container (容器能力)。
大部分时候你只需要用 cm.Window() 。
设置窗口背景色:
window.background = (230, 230, 230) # (R, G, B) or (R, G, B, A)
3. 添加按钮¶
def on_click():
print("Button clicked!")
button = cm.Button(window, text="Click me!", on_click=on_click)
button.place((50, 50), (120, 40)) # place(pos, size)
place() 方法的参数:
第一个参数
(x, y):控件在父容器中的位置(相对于父容器的偏移)第二个参数
(width, height)(可选):控件的尺寸
小技巧
也可以使用 with 语句上下文自动设置父容器:
with window:
button = cm.Button(text="Click me!")
button.place((10, 10), (100, 30))
在 with window: 块内创建的控件会自动以 window 为父容器。
4. 运行应用¶
cm.mainloop()
mainloop() 会进入主事件循环,不断处理窗口事件和更新界面。
程序会一直运行直到所有窗口被关闭。
完整的代码¶
import charmy as cm
def on_click():
print("Hello from Charmy!")
window = cm.Window(size=(400, 300), title="My First Charmy Application")
window.background = (230, 230, 230)
button = cm.Button(window, text="Click me!", on_click=on_click)
button.place((50, 50), (120, 40))
cm.mainloop()
备注
关于 Button 的已知限制:
Button 目前使用 Bootstrap 风格的默认样式(浅灰背景、黑色文字)
悬停效果(暗色背景 + 白色文字)由事件系统驱动,需要鼠标事件正确传递
on_click回调在 Button 初始化时绑定到MouseClick事件(条件:左键)目前 Button 不支持文本以外的内容(如图标)
更复杂的例子:绑定事件¶
Button 的 on_click 参数是最简单的用法。你也可以直接使用 bind() 方法:
import charmy as cm
def on_enter(event):
print("Mouse entered button area")
def on_leave(event):
print("Mouse left button area")
window = cm.Window(size=(300, 200))
btn = cm.Button(window, text="Track mouse")
btn.bind(cm.event_types.MouseEnter, on_enter)
btn.bind(cm.event_types.MouseLeave, on_leave)
btn.place((50, 50), (120, 40))
cm.mainloop()