鱼C论坛

 找回密码
 立即注册
楼主: kerln888

[已解决]html5 左边菜单栏保持展开或者关闭的状态

  [复制链接]
 楼主| 发表于 2024-4-21 19:46:28 | 显示全部楼层
python使用executemany批量插入,报错must be real number, not str
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-21 19:46:44 | 显示全部楼层
kerln888 发表于 2024-04-21 19:46
python使用executemany批量插入,报错must be real nu ...


这个错误通常是由于传入的参数类型不匹配造成的。在使用`executemany`方法批量插入时,需要确保参数的类型与数据库表的列类型一致。

首先,请确保你正常连接了数据库,在执行`executemany`之前,可以使用`print`语句打印一下你要插入的数据,确保数据格式正确。

另外,如果你插入的是字符串类型的数据,请确保传入的数据是使用元组或列表进行包裹的,例如:`("string", )`或`["string"]`。

最后,如果你仍然遇到类型错误的问题,可以尝试将参数转换为符合数据库列类型的格式。例如,如果你要插入的是数字类型的数据,可以使用`float()`或`int()`进行转换。

举个例子,假设你要插入的数据是字符串类型,你可以尝试以下代码:

  1. data = [("string1", ), ("string2", ), ("string3", )]
  2. cursor.executemany("INSERT INTO table_name (column_name) VALUES (%s)", data)
复制代码


如果你要插入的是其他类型的数据,请根据实际情况自行调整代码。

希望以上解决方案能帮到你!如有更多问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-27 21:04:44 | 显示全部楼层
python 读取windows系统 登录日志
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-27 21:04:59 | 显示全部楼层
kerln888 发表于 2024-04-27 21:04
python 读取windows系统 登录日志


要读取Windows系统的登录日志,您可以使用Python的`subprocess`模块来调用系统命令,并将命令输出保存到变量中进行处理。

下面是一个读取Windows系统的登录日志的示例代码:

  1. import subprocess

  2. # 使用系统命令获取登录日志
  3. command = 'wevtutil qe Security /q:"*[System [(EventID=4624)]]" /f:text'
  4. output = subprocess.check_output(command, shell=True, universal_newlines=True)

  5. # 输出登录日志
  6. print(output)
复制代码


上述示例中,使用`wevtutil`命令来查询Windows的安全事件日志(Security),筛选出事件ID为4624的登录事件。通过`subprocess.check_output()`函数执行系统命令并获取输出结果。

请注意,此示例仅适用于Windows系统。如果您在其他操作系统上运行代码,可能需要更改命令或使用其他工具来读取系统登录日志。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-27 21:09:11 | 显示全部楼层
FishC 发表于 2024-4-27 21:04
要读取Windows系统的登录日志,您可以使用Python的`subprocess`模块来调用系统命令,并将命令输出保存 ...

用win32evtlog读取windows系统 登录日志
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-27 21:09:27 | 显示全部楼层
kerln888 发表于 2024-04-27 21:09
用win32evtlog读取windows系统 登录日志


要使用`pywin32`库中的`win32evtlog`模块读取Windows系统的登录日志,可以按照以下步骤进行操作:

首先,确保已经安装了`pywin32`库,如果没有安装可以通过以下命令进行安装:
  1. pip install pywin32
复制代码


然后,使用下面的代码来读取Windows系统的登录日志:

  1. import win32evtlog

  2. # 定义要读取的事件日志名称和源名称
  3. log_type = 'Security'
  4. log_source = 'Microsoft Windows security auditing.'

  5. # 连接到事件日志
  6. hand = win32evtlog.OpenEventLog(None, log_type)

  7. # 读取事件日志中的事件
  8. flags = win32evtlog.EVENTLOG_BACKWARDS_READ | win32evtlog.EVENTLOG_SEQUENTIAL_READ
  9. total = win32evtlog.GetNumberOfEventLogRecords(hand)

  10. events = []
  11. while True:
  12.     events = win32evtlog.ReadEventLog(hand, flags, 0)
  13.     if not events:
  14.         break

  15.     for event in events:
  16.         if event.EventID == 4624:  # 登录事件的EventID为4624
  17.             print(event.TimeGenerated.Format())
  18.             print(event.StringInserts[1])  # 打印登录用户名

  19. # 关闭事件日志连接
  20. win32evtlog.CloseEventLog(hand)
复制代码


上述代码会打印出登录事件的时间和用户名。您可以根据自己的需求进行进一步处理或保存。

需要注意的是,运行此代码需要管理员权限,否则可能无法读取事件日志。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-28 19:27:39 | 显示全部楼层
FishC 发表于 2024-4-27 21:09
要使用`pywin32`库中的`win32evtlog`模块读取Windows系统的登录日志,可以按照以下步骤进行操作:

...

上面打出来的是登录时间和主机名,不是用户名
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-28 19:27:51 | 显示全部楼层
kerln888 发表于 2024-04-28 19:27
上面打出来的是登录时间和主机名,不是用户名


非常抱歉,我理解错了。要读取Windows系统的登录日志以获取用户名,您可以尝试以下代码:

  1. import win32evtlog

  2. # 定义事件类型和源
  3. event_types = {
  4.     1: 'Error',
  5.     2: 'Warning',
  6.     4: 'Information',
  7.     8: 'Audit Success',
  8.     16: 'Audit Failure'
  9. }

  10. event_sources = ['Security']

  11. # 打开安全日志
  12. log_handle = win32evtlog.OpenEventLog(None, 'Security')

  13. # 读取事件
  14. flags = win32evtlog.EVENTLOG_BACKWARDS_READ | win32evtlog.EVENTLOG_SEQUENTIAL_READ
  15. total = win32evtlog.GetNumberOfEventLogRecords(log_handle)

  16. events = win32evtlog.ReadEventLog(log_handle, flags, 0)
  17. for event in events:
  18.     event_id = event.EventID & 0xFFFF

  19.     # 只处理登录事件
  20.     if event_id == 4624:
  21.         event_data = event.StringInserts
  22.         username = event_data[5]
  23.         print(f"Username: {username}")

  24. # 关闭日志句柄
  25. win32evtlog.CloseEventLog(log_handle)
复制代码


这个代码会打开Windows安全日志,读取所有事件并筛选出登录事件(事件ID为4624),然后打印出对应的用户名。

请注意,运行此代码需要管理员权限。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-1 08:37:55 | 显示全部楼层
python tkinter 动态往labelFrame里面添加radioButton,添加数量超过labelframe的高度后,无法显示后面添加的radioButton,应该这样做才能显示?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-1 08:38:11 | 显示全部楼层
kerln888 发表于 2024-05-01 08:37
python tkinter 动态往labelFrame里面添加radioButton ...


当往`LabelFrame`中添加的`RadioButton`数量超过其高度时,可以使用滚动条来实现显示。

以下是一个示例代码,展示如何使用Tkinter和滚动条在`LabelFrame`中动态添加`RadioButton`:

  1. from tkinter import *

  2. def add_radiobutton():
  3.     radio = Radiobutton(label_frame, text="RadioButton")
  4.     radio.pack(fill=X)
  5.    
  6. root = Tk()
  7. root.geometry("300x200")

  8. scrollbar = Scrollbar(root)
  9. scrollbar.pack(side=RIGHT, fill=Y)

  10. label_frame = LabelFrame(root, text="RadioButtons", width=200, height=100)
  11. label_frame.pack()

  12. canvas = Canvas(label_frame, yscrollcommand=scrollbar.set)
  13. canvas.pack(side=LEFT, expand=True, fill=BOTH)

  14. scrollbar.config(command=canvas.yview)

  15. frame = Frame(canvas)
  16. canvas.create_window((0, 0), window=frame, anchor=NW)

  17. for i in range(30):  # 添加30个RadioButton
  18.     add_radiobutton()

  19. frame.update_idletasks()  # 更新frame的大小以适应内容

  20. canvas.config(scrollregion=canvas.bbox("all"))

  21. root.mainloop()
复制代码


在这个示例中,我们创建了一个带滚动条的`LabelFrame`,用于容纳动态添加的`RadioButton`。通过使用`Canvas`和`create_window`函数,我们在`LabelFrame`中创建了一个可滚动的视图区域。然后,我们可以通过将`RadioButton`添加到一个内部的`Frame`上,来实现动态添加。最后,我们使用`update_idletasks`方法更新`frame`的大小以适应内容,并使用`config`方法设置`scrollregion`以使滚动条正常工作。

希望这个示例对您有所帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-1 09:02:46 | 显示全部楼层
FishC 发表于 2024-5-1 08:38
当往`LabelFrame`中添加的`RadioButton`数量超过其高度时,可以使用滚动条来实现显示。

以下是一个 ...

并不能滚动
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-1 09:02:58 | 显示全部楼层


非常抱歉,我理解错了您的问题。在Tkinter中,`LabelFrame`默认是不支持滚动的。要实现滚动的效果,您需要使用`Canvas`和`Scrollbar`来创建一个可滚动的区域。

下面是一个示例代码,演示如何在Tkinter中创建一个可滚动的`LabelFrame`,并动态地向其中添加`RadioButton`:

  1. import tkinter as tk
  2. from tkinter import ttk


  3. def add_radio_button():
  4.     radio_button = ttk.Radiobutton(content_frame, text=f"Option {count.get()}", value=count.get())
  5.     radio_button.pack(pady=5)
  6.     count.set(count.get() + 1)
  7.     canvas.configure(scrollregion=canvas.bbox("all"))


  8. root = tk.Tk()
  9. root.title("Scrollable LabelFrame Demo")

  10. # 创建一个 Canvas
  11. canvas = tk.Canvas(root)
  12. canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

  13. # 创建一个 Scrollbar
  14. scrollbar = tk.Scrollbar(root, command=canvas.yview)
  15. scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

  16. # 将 Scrollbar 连接到 Canvas
  17. canvas.configure(yscrollcommand=scrollbar.set)
  18. canvas.bind("<Configure>", lambda e: canvas.configure(scrollregion=canvas.bbox("all")))

  19. # 创建一个 Frame 作为滚动区域的内容
  20. content_frame = ttk.Frame(canvas)

  21. # 将内容 Frame 添加到 Canvas 中
  22. canvas.create_window((0, 0), window=content_frame, anchor="nw")

  23. # 添加一个 Button 用于动态添加 RadioButton
  24. add_button = ttk.Button(root, text="Add RadioButton", command=add_radio_button)
  25. add_button.pack()

  26. # 创建一个计数器变量,用于给 RadioButton 提供不同的值
  27. count = tk.IntVar(value=1)

  28. # 初始化时向内容 Frame 中添加一些 RadioButton
  29. for i in range(10):
  30.     radio_button = ttk.Radiobutton(content_frame, text=f"Option {i+1}", value=i+1)
  31.     radio_button.pack(pady=5)

  32. root.mainloop()
复制代码


这个示例中通过使用`Canvas`和`Scrollbar`来创建一个可滚动的区域,并将`LabelFrame`的内容放置在其中。`Canvas`会根据内容的实际大小自动调整滚动区域的大小,从而实现滚动功能。

希望这能帮到您!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-2 15:15:56 | 显示全部楼层
FishC 发表于 2024-5-1 09:02
非常抱歉,我理解错了您的问题。在Tkinter中,`LabelFrame`默认是不支持滚动的。要实现滚动的效果,您 ...

我修改了这个代码,radiobutton采用grid排列,排成两行。现在有个问题,当添加的radiobutton在第一行时,滚动条无法下拉显示新增的radioButton。再新增一个radiobutton,滚动条才能下拉显示新增的两个radiobutton
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-2 15:16:15 | 显示全部楼层
kerln888 发表于 2024-05-02 15:15
我修改了这个代码,radiobutton采用grid排列,排成两 ...


是的,您遇到了一个问题。当`RadioButton`的位置超出了可视区域时,滚动条并不会自动滚动以显示新的`RadioButton`。

要解决这个问题,您可以在添加完所有`RadioButton`之后,使用`scrollbar`的`set()`方法将滚动位置设置为最底部,以确保新添加的`RadioButton`在可视区域内。这里是一个示例代码:

  1. import tkinter as tk
  2. from tkinter import ttk

  3. root = tk.Tk()
  4. root.geometry("300x200")

  5. # 创建一个垂直滚动条
  6. scrollbar = ttk.Scrollbar(root)
  7. scrollbar.pack(side="right", fill="y")

  8. # 创建一个LabelFrame,作为容器
  9. labelframe = ttk.LabelFrame(root, text="RadioButton列表")
  10. labelframe.pack()

  11. # 创建一个Frame,作为放置RadioButton的容器
  12. frame = ttk.Frame(labelframe)
  13. frame.pack()

  14. # 将滚动条绑定到frame上
  15. frame.bind("<Configure>", lambda e: frame.configure(scrollregion=frame.bbox("all"), yscrollcommand=scrollbar.set))
  16. scrollbar.config(command=frame.yview)

  17. # 添加RadioButton
  18. for i in range(10):
  19.     radio_button = ttk.Radiobutton(frame, text=f"RadioButton {i+1}")
  20.     radio_button.grid(row=i // 2, column=i % 2, padx=10, pady=5)
  21.    
  22. # 设置滚动条位置
  23. scrollbar.set(0.0, 1.0)

  24. root.mainloop()
复制代码


这样,无论新添加的`RadioButton`在哪个行,滚动条都会自动滚动到最底部,以便您可以看到新添加的`RadioButton`。希望对您有所帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-2 15:28:55 | 显示全部楼层
FishC 发表于 2024-5-2 15:16
是的,您遇到了一个问题。当`RadioButton`的位置超出了可视区域时,滚动条并不会自动滚动以显示新的`Ra ...

frame不能捆绑滚动条
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-2 15:29:08 | 显示全部楼层
kerln888 发表于 2024-05-02 15:28
frame不能捆绑滚动条


非常抱歉,前面的回答有误。确实,在Tkinter中,`Frame`并不能直接与滚动条绑定。不过,我们可以通过在`Frame`内部创建一个`Canvas`来实现滚动条的效果。下面是一个例子,展示了如何在Tkinter中添加滚动条来滚动`RadioButton`:

  1. import tkinter as tk
  2. from tkinter import ttk

  3. def add_radio_button():
  4.     button_value.set(button_value.get() + 1)
  5.     radio_button = ttk.Radiobutton(frame, text=f"Radio button {button_value.get()}", value=button_value.get())
  6.     radio_button.grid(sticky="w")

  7. root = tk.Tk()
  8. root.title("Scrollable Frame Example")

  9. # 创建滚动条
  10. scrollbar = ttk.Scrollbar(root)
  11. scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

  12. # 创建滚动区域
  13. canvas = tk.Canvas(root, yscrollcommand=scrollbar.set)
  14. canvas.pack(fill=tk.BOTH, expand=True)

  15. # 设置滚动条的绑定
  16. scrollbar.config(command=canvas.yview)

  17. # 创建一个帧用于放置 RadioButton
  18. frame = ttk.Frame(canvas)
  19. canvas.create_window((0, 0), window=frame, anchor="nw")

  20. # 添加初始的 RadioButton
  21. button_value = tk.IntVar()
  22. for i in range(10):
  23.     radio_button = ttk.Radiobutton(frame, text=f"Radio button {i+1}", value=i+1)
  24.     radio_button.grid(sticky="w")

  25. # 添加按钮,用于添加新的 RadioButton
  26. add_button = ttk.Button(root, text="Add Radio Button", command=add_radio_button)
  27. add_button.pack()

  28. root.mainloop()
复制代码


这个例子创建了一个滚动的`RadioButton`列表。当你点击"Add Radio Button"按钮时,会动态地添加新的`RadioButton`。滚动条将自动适应并可以滚动以显示所有的`RadioButton`。

希望这个例子能够帮到你!如有任何问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-2 15:42:10 | 显示全部楼层
FishC 发表于 2024-5-2 15:29
非常抱歉,前面的回答有误。确实,在Tkinter中,`Frame`并不能直接与滚动条绑定。不过,我们可以通过在 ...

点击"Add Radio Button"并不会滚动
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-2 15:42:33 | 显示全部楼层
kerln888 发表于 2024-05-02 15:42
点击"Add Radio Button"并不会滚动


非常抱歉,之前的回答有误。确实,在`Frame`上添加滚动条并不会自动滚动。但是我们可以通过在`Canvas`上添加滚动条来实现这个功能。这是一个修订后的代码示例:

  1. import tkinter as tk
  2. from tkinter import ttk

  3. def add_radio_button():
  4.     button_value = len(radio_buttons) + 1
  5.     radio_buttons.append(tk.Radiobutton(canvas, text=f"Radio {button_value}"))
  6.     canvas.create_window((10, button_value * 30), window=radio_buttons[-1], anchor="w", width=200)
  7.     update_scroll_region()

  8. def update_scroll_region():
  9.     canvas.update_idletasks()
  10.     canvas.config(scrollregion=canvas.bbox("all"))

  11. root = tk.Tk()
  12. root.geometry("400x400")

  13. scrollbar = tk.Scrollbar(root)
  14. scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

  15. canvas = tk.Canvas(root, yscrollcommand=scrollbar.set)
  16. canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

  17. scrollbar.config(command=canvas.yview)

  18. frame = tk.Frame(canvas)
  19. canvas.create_window((0, 0), window=frame, anchor="nw")

  20. radio_buttons = []
  21. for i in range(10):
  22.     radio_buttons.append(tk.Radiobutton(frame, text=f"Radio {i+1}"))
  23.     radio_buttons[i].pack()

  24. add_button = ttk.Button(root, text="Add Radio Button", command=add_radio_button)
  25. add_button.pack()

  26. update_scroll_region()

  27. tk.mainloop()
复制代码


这个示例中,我们将`Frame`换成了`Canvas`,并在`Canvas`上添加了一个滚动条。当点击"Add Radio Button"按钮时,会在`Canvas`中添加一个新的`Radiobutton`。同时,我们添加了`update_scroll_region`函数来更新滚动区域的大小。

希望这次能对您有所帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-2 16:01:34 | 显示全部楼层
FishC 发表于 2024-5-2 15:42
非常抱歉,之前的回答有误。确实,在`Frame`上添加滚动条并不会自动滚动。但是我们可以通过在`Canvas` ...

我希望添加完新radiobutton以后,滚动条能自动滚到最底部
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-2 16:01:58 | 显示全部楼层
kerln888 发表于 2024-05-02 16:01
我希望添加完新radiobutton以后,滚动条能自动滚到最 ...


非常抱歉之前的回答有误。确实,在Tkinter中,使用滚动条自动滚动到最底部是一个复杂的问题。下面是一个可行的解决方案,使用`Canvas`和`Scrollbar`来实现。

首先,我们创建一个带有滚动条的`Canvas`和一个保存所有按钮的`Frame`:

  1. import tkinter as tk

  2. def add_radio_button():
  3.     # 添加新的单选按钮
  4.     new_button = tk.Radiobutton(frame, text="New Button")
  5.     new_button.pack()

  6.     # 自动滚动到最底部
  7.     canvas.yview_moveto(1)

  8. root = tk.Tk()

  9. # 创建滚动条
  10. scrollbar = tk.Scrollbar(root)
  11. scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

  12. # 创建Canvas并绑定滚动条
  13. canvas = tk.Canvas(root, yscrollcommand=scrollbar.set)
  14. canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

  15. scrollbar.config(command=canvas.yview)

  16. # 创建帧并将其放置在Canvas上
  17. frame = tk.Frame(canvas)
  18. canvas.create_window((0, 0), window=frame, anchor=tk.NW)

  19. # 初始按钮
  20. for i in range(20):
  21.     button = tk.Radiobutton(frame, text=f"Button {i+1}")
  22.     button.pack()

  23. # 添加按钮的按钮
  24. add_button = tk.Button(root, text="Add Radio Button", command=add_radio_button)
  25. add_button.pack()

  26. root.mainloop()
复制代码


通过点击"Add Radio Button"按钮,会添加一个新的单选按钮,并且滚动条会自动滚动到最底部以显示新添加的按钮。试试这段代码,看看是否符合你的要求。希望能帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 03:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表