22
33from textual .widget import Widget
44from textual .message import Message
5- from textual .widgets import TabPane , TabbedContent
5+ from textual .containers import Vertical
6+ from textual .widgets import Button , TabPane , TabbedContent
67
78from .user_selector import UserSelector , UserSelectorPressed
89from .channel_selector import ChannelSelector , ChannelSelectorPressed
@@ -36,16 +37,39 @@ class Sidebar(Widget):
3637 width: 25%;
3738 height: 100%;
3839 border-right: solid rgba(170, 170, 170, 0.7);
40+ layout: vertical;
41+ }
42+
43+ TabbedContent {
44+ height: 100%;
3945 }
4046
4147 TabPane {
4248 padding: 0;
49+ layout: vertical;
50+ height: 100%;
51+ }
52+
53+ .selector-container {
54+ height: 1fr;
55+ layout: vertical;
56+ }
57+
58+ .button-container {
59+ height: auto;
60+ layout: vertical;
61+ margin: 1 0;
62+ align-horizontal: center;
4363 }
4464
4565 UserSelector, ChannelSelector {
4666 margin: 1 0 0 0;
47- border: none;
48- max-height: 100%;
67+ height: 1fr;
68+ }
69+
70+ .add-button {
71+ background: darkgreen;
72+ color: white;
4973 }
5074 """
5175
@@ -61,16 +85,29 @@ def app(self) -> "Frontend":
6185 def compose (self ):
6286 with TabbedContent ():
6387 with TabPane ("👥 用户列表" , id = "users" ):
64- yield self .user_selector
88+ with Vertical (classes = "selector-container" ):
89+ yield self .user_selector
90+ with Vertical (classes = "button-container" ):
91+ yield Button ("➕ 添加用户" , id = "add-user" , classes = "add-button" )
6592 with TabPane ("📺 频道列表" , id = "channels" ):
66- yield self .channel_selector
93+ with Vertical (classes = "selector-container" ):
94+ yield self .channel_selector
95+ with Vertical (classes = "button-container" ):
96+ yield Button ("➕ 添加频道" , id = "add-channel" , classes = "add-button" )
97+
98+ async def on_button_pressed (self , event : Button .Pressed ):
99+ """处理按钮点击事件"""
100+ if event .button .id == "add-user" :
101+ await self .user_selector .add_new_user ()
102+ elif event .button .id == "add-channel" :
103+ await self .channel_selector .add_new_channel ()
67104
68105 def on_user_selector_pressed (self , event : UserSelectorPressed ):
69106 """处理用户选择事件"""
70107 # 更新当前用户
71108 self .app .storage .set_user (event .user )
72109
73- # 更新用���选择器显示
110+ # 更新用户选择器显示
74111 # self.user_selector.update_user_list()
75112
76113 # 向父组件发送消息
0 commit comments