Skip to content

Commit 91d1ae9

Browse files
committed
fix(teacher-ui): enforce minimum window sizes
- Lock main Teacher window to 1080x560 minimum. - Dialogs use layout-based mins (update_idletasks + req size); network restrict stays 550x520. - Skip minsize on drag-selection overlay toplevel. Made-with: Cursor
1 parent dd3b7f2 commit 91d1ae9

1 file changed

Lines changed: 20 additions & 1 deletion

File tree

teacher/ui.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,19 @@ def _display_reported_mac(mid: str) -> str:
6666
return "-".join([hx[i : i + 2] for i in range(0, 12, 2)])
6767

6868

69+
# 主窗口最小尺寸(子对话框在布局完成后用 _dlg_lock_min_size,与「网络访问限制」相同:minsize 对齐自身 geometry / 所需尺寸,不跟主窗口)
70+
_MIN_WIN_W, _MIN_WIN_H = 1080, 560
71+
72+
73+
def _apply_min_window_size(win: tk.Misc) -> None:
74+
win.minsize(_MIN_WIN_W, _MIN_WIN_H)
75+
76+
77+
def _dlg_lock_min_size(d: tk.Misc) -> None:
78+
d.update_idletasks()
79+
d.minsize(d.winfo_reqwidth(), d.winfo_reqheight())
80+
81+
6982
class TeacherApp(tk.Tk):
7083
def __init__(
7184
self,
@@ -77,7 +90,8 @@ def __init__(
7790
) -> None:
7891
super().__init__()
7992
self.title("机房管理 — 教师端 by MisakaNo(QQ:1689910089)")
80-
self.geometry("1080x560")
93+
self.geometry(f"{_MIN_WIN_W}x{_MIN_WIN_H}")
94+
_apply_min_window_size(self)
8195
self._server = server
8296
self._on_enqueue_rename = on_enqueue_rename
8397
self._on_enqueue_set_ipv4 = on_enqueue_set_ipv4
@@ -499,6 +513,7 @@ def clear_filter() -> None:
499513
d.columnconfigure(0, weight=1)
500514
d.columnconfigure(1, weight=1)
501515
d.columnconfigure(2, weight=1)
516+
_dlg_lock_min_size(d)
502517

503518
def refresh_sessions(self, sessions: List["ClientSession"]) -> None:
504519
self._sessions_cache = list(sessions)
@@ -542,6 +557,7 @@ def ok() -> None:
542557
ttk.Button(bf, text="确定", command=ok).pack(side=tk.LEFT, padx=4)
543558
ttk.Button(bf, text="取消", command=d.destroy).pack(side=tk.LEFT, padx=4)
544559
d.columnconfigure(0, weight=1)
560+
_dlg_lock_min_size(d)
545561

546562
def _dlg_ipv4(self) -> None:
547563
sids = self.selected_session_ids()
@@ -622,6 +638,7 @@ def ok() -> None:
622638
ttk.Button(bf, text="确定", command=ok).pack(side=tk.LEFT, padx=4)
623639
ttk.Button(bf, text="取消", command=d.destroy).pack(side=tk.LEFT, padx=4)
624640
d.columnconfigure(0, weight=1)
641+
_dlg_lock_min_size(d)
625642

626643
def _dlg_power(self) -> None:
627644
sids = self.selected_session_ids()
@@ -655,6 +672,7 @@ def run_power_action(act: str) -> None:
655672
ttk.Button(bf, text="重启", command=lambda: run_power_action("reboot")).pack(
656673
side=tk.LEFT
657674
)
675+
_dlg_lock_min_size(d)
658676

659677
def _dlg_network_restrict(self) -> None:
660678
sids = self.selected_session_ids()
@@ -666,6 +684,7 @@ def _dlg_network_restrict(self) -> None:
666684
d.transient(self)
667685
d.grab_set()
668686
d.geometry("550x520")
687+
d.minsize(550, 520)
669688

670689
config = _load_config()
671690
saved_mode = config.get("network_restrict", {}).get("mode", "blacklist")

0 commit comments

Comments
 (0)