speed.py 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. import tkinter as tk
  2. from tkinter import ttk
  3. from utils.config import config
  4. class SpeedUI:
  5. def init_ui(self, root=None):
  6. """
  7. Init speed UI
  8. """
  9. frame_default_sort = tk.Frame(root)
  10. frame_default_sort.pack(fill=tk.X)
  11. frame_default_sort_column1 = tk.Frame(frame_default_sort)
  12. frame_default_sort_column1.pack(side=tk.LEFT, fill=tk.Y)
  13. frame_default_sort_column2 = tk.Frame(frame_default_sort)
  14. frame_default_sort_column2.pack(side=tk.RIGHT, fill=tk.Y)
  15. self.open_speed_test_label = tk.Label(
  16. frame_default_sort_column1, text="开启测速:", width=12
  17. )
  18. self.open_speed_test_label.pack(side=tk.LEFT, padx=4, pady=8)
  19. self.open_speed_test_var = tk.BooleanVar(value=config.open_speed_test)
  20. self.open_speed_test_checkbutton = ttk.Checkbutton(
  21. frame_default_sort_column1,
  22. variable=self.open_speed_test_var,
  23. onvalue=True,
  24. offvalue=False,
  25. command=self.update_open_speed_test,
  26. )
  27. self.open_speed_test_checkbutton.pack(side=tk.LEFT, padx=4, pady=8)
  28. self.speed_test_limit_label = tk.Label(
  29. frame_default_sort_column2, text="测速并发:", width=12
  30. )
  31. self.speed_test_limit_label.pack(side=tk.LEFT, padx=4, pady=8)
  32. self.speed_test_limit_entry = tk.Entry(frame_default_sort_column2, width=10)
  33. self.speed_test_limit_entry.pack(side=tk.LEFT, padx=4, pady=8)
  34. self.speed_test_limit_entry.insert(0, config.speed_test_limit)
  35. self.speed_test_limit_entry.bind("<KeyRelease>", self.update_speed_test_limit)
  36. self.speed_test_timeout_label = tk.Label(
  37. frame_default_sort_column2, text="响应超时(s):", width=12
  38. )
  39. self.speed_test_timeout_label.pack(side=tk.LEFT, padx=4, pady=8)
  40. self.speed_test_timeout_entry = tk.Entry(frame_default_sort_column2, width=10)
  41. self.speed_test_timeout_entry.pack(side=tk.LEFT, padx=4, pady=8)
  42. self.speed_test_timeout_entry.insert(0, config.speed_test_timeout)
  43. self.speed_test_timeout_entry.bind("<KeyRelease>", self.update_speed_test_timeout)
  44. frame_default_sort_mode = tk.Frame(root)
  45. frame_default_sort_mode.pack(fill=tk.X)
  46. frame_default_sort_mode_column1 = tk.Frame(frame_default_sort_mode)
  47. frame_default_sort_mode_column1.pack(side=tk.LEFT, fill=tk.Y)
  48. frame_default_sort_mode_column2 = tk.Frame(frame_default_sort_mode)
  49. frame_default_sort_mode_column2.pack(side=tk.RIGHT, fill=tk.Y)
  50. frame_default_speed_params = tk.Frame(root)
  51. frame_default_speed_params.pack(fill=tk.X)
  52. frame_default_speed_params_column1 = tk.Frame(
  53. frame_default_speed_params
  54. )
  55. frame_default_speed_params_column1.pack(side=tk.LEFT, fill=tk.Y)
  56. frame_default_speed_params_column2 = tk.Frame(
  57. frame_default_speed_params
  58. )
  59. frame_default_speed_params_column2.pack(side=tk.RIGHT, fill=tk.Y)
  60. self.open_filter_speed_label = tk.Label(
  61. frame_default_speed_params_column1, text="速率过滤:", width=12
  62. )
  63. self.open_filter_speed_label.pack(side=tk.LEFT, padx=4, pady=8)
  64. self.open_filter_speed_var = tk.BooleanVar(
  65. value=config.open_filter_speed
  66. )
  67. self.open_filter_speed_checkbutton = ttk.Checkbutton(
  68. frame_default_speed_params_column1,
  69. variable=self.open_filter_speed_var,
  70. onvalue=True,
  71. offvalue=False,
  72. command=self.update_open_filter_speed
  73. )
  74. self.open_filter_speed_checkbutton.pack(side=tk.LEFT, padx=4, pady=8)
  75. self.min_speed_label = tk.Label(
  76. frame_default_speed_params_column2, text="最小速率(M/s):", width=12
  77. )
  78. self.min_speed_label.pack(side=tk.LEFT, padx=4, pady=8)
  79. self.min_speed_entry = tk.Entry(
  80. frame_default_speed_params_column2, width=10
  81. )
  82. self.min_speed_entry.pack(side=tk.LEFT, padx=4, pady=8)
  83. self.min_speed_entry.insert(0, config.min_speed)
  84. self.min_speed_entry.bind("<KeyRelease>", self.update_min_speed)
  85. frame_default_resolution_params = tk.Frame(root)
  86. frame_default_resolution_params.pack(fill=tk.X)
  87. frame_default_resolution_params_column1 = tk.Frame(
  88. frame_default_resolution_params
  89. )
  90. frame_default_resolution_params_column1.pack(side=tk.LEFT, fill=tk.Y)
  91. frame_default_resolution_params_column2 = tk.Frame(
  92. frame_default_resolution_params
  93. )
  94. frame_default_resolution_params_column2.pack(side=tk.RIGHT, fill=tk.Y)
  95. self.open_filter_resolution_label = tk.Label(
  96. frame_default_resolution_params_column1, text="分辨率过滤:", width=12
  97. )
  98. self.open_filter_resolution_label.pack(side=tk.LEFT, padx=4, pady=8)
  99. self.open_filter_resolution_var = tk.BooleanVar(
  100. value=config.open_filter_resolution
  101. )
  102. self.open_filter_resolution_checkbutton = ttk.Checkbutton(
  103. frame_default_resolution_params_column1,
  104. variable=self.open_filter_resolution_var,
  105. onvalue=True,
  106. offvalue=False,
  107. command=self.update_open_filter_resolution
  108. )
  109. self.open_filter_resolution_checkbutton.pack(side=tk.LEFT, padx=4, pady=8)
  110. self.min_resolution_label = tk.Label(
  111. frame_default_resolution_params_column2, text="最小分辨率:", width=12
  112. )
  113. self.min_resolution_label.pack(side=tk.LEFT, padx=4, pady=8)
  114. self.min_resolution_entry = tk.Entry(
  115. frame_default_resolution_params_column2, width=10
  116. )
  117. self.min_resolution_entry.pack(side=tk.LEFT, padx=4, pady=8)
  118. self.min_resolution_entry.insert(0, config.min_resolution)
  119. self.min_resolution_entry.bind("<KeyRelease>", self.update_min_resolution)
  120. self.max_resolution_label = tk.Label(
  121. frame_default_resolution_params_column2, text="最大分辨率:", width=12
  122. )
  123. self.max_resolution_label.pack(side=tk.LEFT, padx=4, pady=8)
  124. self.max_resolution_entry = tk.Entry(
  125. frame_default_resolution_params_column2, width=10
  126. )
  127. self.max_resolution_entry.pack(side=tk.LEFT, padx=4, pady=8)
  128. self.max_resolution_entry.insert(0, config.max_resolution)
  129. self.max_resolution_entry.bind("<KeyRelease>", self.update_max_resolution)
  130. frame_default_sort_params = tk.Frame(root)
  131. frame_default_sort_params.pack(fill=tk.X)
  132. self.speed_test_filter_host_label = tk.Label(
  133. frame_default_sort_params, text="共享Host结果:", width=12
  134. )
  135. self.speed_test_filter_host_label.pack(side=tk.LEFT, padx=4, pady=8)
  136. self.speed_test_filter_host_var = tk.BooleanVar(
  137. value=config.speed_test_filter_host
  138. )
  139. self.speed_test_filter_host_checkbutton = ttk.Checkbutton(
  140. frame_default_sort_params,
  141. variable=self.speed_test_filter_host_var,
  142. onvalue=True,
  143. offvalue=False,
  144. command=self.update_speed_test_filter_host
  145. )
  146. self.speed_test_filter_host_checkbutton.pack(side=tk.LEFT, padx=4, pady=8)
  147. def update_open_speed_test(self):
  148. config.set("Settings", "open_speed_test", str(self.open_speed_test_var.get()))
  149. def update_speed_test_limit(self, event):
  150. config.set("Settings", "speed_test_limit", self.speed_test_limit_entry.get())
  151. def update_speed_test_timeout(self, event):
  152. config.set("Settings", "speed_test_timeout", self.speed_test_timeout_entry.get())
  153. def update_open_filter_speed(self):
  154. config.set(
  155. "Settings",
  156. "open_filter_speed",
  157. str(self.open_filter_speed_var.get()),
  158. )
  159. def update_min_speed(self, event):
  160. config.set("Settings", "min_speed", self.min_speed_entry.get())
  161. def update_open_filter_resolution(self):
  162. config.set(
  163. "Settings",
  164. "open_filter_resolution",
  165. str(self.open_filter_resolution_var.get()),
  166. )
  167. def update_min_resolution(self, event):
  168. config.set("Settings", "min_resolution", self.min_resolution_entry.get())
  169. def update_max_resolution(self, event):
  170. config.set("Settings", "max_resolution", self.max_resolution_entry.get())
  171. def update_speed_test_filter_host(self, event):
  172. config.set("Settings", "speed_test_filter_host", self.speed_test_filter_host_var.get())
  173. def change_entry_state(self, state):
  174. for entry in [
  175. "open_speed_test_checkbutton",
  176. "speed_test_limit_entry",
  177. "speed_test_timeout_entry",
  178. "open_filter_speed_checkbutton",
  179. "min_speed_entry",
  180. "open_filter_resolution_checkbutton",
  181. "min_resolution_entry",
  182. "max_resolution_entry",
  183. "speed_test_filter_host_checkbutton"
  184. ]:
  185. getattr(self, entry).config(state=state)