小编sid*_*cal的帖子

pyqt5 textedit 当行移过指定行时删除行

我想设置 PYQT Qtextedit 小部件并使用它来监视另一个应用程序活动日志(如 Linux 上的 tail -f)。长期来看,我担心它运行时间太长,并且使用大量内存来构建文本。是否可以设置限制,以便删除经过 x 行的文本?从我发现它似乎需要定制工作,如果存在,我想找到一个限制器设置。

python pyqt qtextedit python-3.x pyqt5

4
推荐指数
1
解决办法
807
查看次数

从文件插入文本后 Tkinter CPU 活动

如果我将一个 25MB/190,000 行的文本文件转储到一个文本小部件中,该过程会很快完成,但之后我仍然看到 python.exe 使用 50% CPU 一分钟左右。文件越大,CPU 使用率下降到 0% 所需的时间就越长。当我开始将多个文件加载到不同的文本小部件中时,它们会立即加载到小部件中,但 CPU 保持在 50% 并且 GUI 运行得非常慢,直到它在后端完成任何操作。有人可以向我解释为什么 CPU 仍在使用中,如果文本已经在小部件中,为什么它会影响性能?它需要做什么?有什么办法解决这个问题吗?

from tkinter import *


file = r"C:\path\to\large\file.txt"

def doit():
    with open(file, 'r') as f:
        txt.insert('end', ''.join(f))
        f.close()
main = Tk()

txt = Text(main)
txt.grid(row=0)

btn = Button(main, text="click here", command=doit)
btn.grid(row=1, columnspan=2)

main.mainloop()
Run Code Online (Sandbox Code Playgroud)

我想可能是因为我逐行处理文件而不是将整个文件加载到 RAM 中。我试过 readlines() 但我得到了相同的结果。

tkinter python-3.x

3
推荐指数
1
解决办法
101
查看次数

QSystemTrayIcon.setIcon 无法更改托盘图标

import sys
from PyQt5.QtWidgets import QSystemTrayIcon, QApplication, QMenu
from PyQt5.QtGui import QIcon

class autoparse():
    def __init__(self):

       self.main()

    def main(self):
        app = QApplication(sys.argv)

        self.trayIcon = QSystemTrayIcon(QIcon("icons\icon-windowed.ico"), app)
        self.menu = QMenu()
        self.autopconfig = self.menu.addAction('Config')
        self.autopconfig.triggered.connect(self.swapicon)
        self.trayIcon.setContextMenu(self.menu)

        self.trayIcon.show()
        sys.exit(app.exec_())
    def swapicon(self):
        QSystemTrayIcon.setIcon(QIcon("icons\python.ico"))

test1 = autoparse()
Run Code Online (Sandbox Code Playgroud)

我可以让初始图标设置得很好,我可以通过为应用程序创建 2 个图标然后执行 self.trayIcon.hide() 和 self.newicon.show() 来解决这个问题,但我不认为这是正确的方法。

Pycharm 显示一条通知,上面写着“预期的 QSystemTrayIcon,获得了 QIcon”,但如果我QIcon与之交换QSystemTrayIcon,则它会说Qicon丢失。SOOOOOO 我将其更改为QSystemTrayIcon(QIcon("icons\python.ico"),但它仍然显示QIcon未填充。问题检测似乎一直在循环。

当我运行 swapicon 函数时,按原样运行代码会给出“setIcon (self, QIcon): unbound 方法的第一个参数必须具有类型 'QSystemTrayIcon'”。如果我删除 QIcon,使其只是 setIcon(文件),那么我会得到“setIcon(self,QIcon):没有足够的参数”

python pyqt pyqt5 qsystemtrayicon

3
推荐指数
1
解决办法
2576
查看次数

从托盘图标弹出窗口,当窗口关闭时不会关闭程序

设置一个从托盘图标启动不同应用程序的工具包,我需要能够打开配置窗口,然后在不关闭整个应用程序的情况下关闭它。

import sys
from PyQt5.QtWidgets import QSystemTrayIcon, QApplication, QMenu, qApp, QMainWindow, QPushButton, QLabel, QLineEdit
from PyQt5.QtGui import QIcon
from PyQt5 import QtCore

class autoparse():
    def __init__(self):
        self.main()

    def main(self):
        app = QApplication(sys.argv)
        self.trayIcon = QSystemTrayIcon(QIcon("icons\icon-windowed.ico"), app)
        self.menu = QMenu()
        self.trayIcon.setContextMenu(self.menu)
        self.autopconfig = self.menu.addAction('Config')
        self.autopconfig.triggered.connect(self.configwindow)
        exitaction = self.menu.addAction("Exit")
        exitaction.triggered.connect(qApp.quit)

        self.trayIcon.show()
        sys.exit(app.exec_())

    def configwindow(self):
        try:
            self.config = QMainWindow()
            self.config.setWindowTitle('Configuration')
            self.config.setGeometry(300, 300, 640, 480)

            self.lbl = QLabel('Directory: ', self.config)
            self.lbl.setGeometry(QtCore.QRect(10, 20, 200, 20))
            self.pathsel = QLineEdit(self.config)
            self.pathsel.setMaxLength(250)
            self.pathsel.setText('path here')
            # self.pathsel.selectAll()
            self.pathsel.setGeometry(QtCore.QRect(10, 50, …
Run Code Online (Sandbox Code Playgroud)

python windows pyqt pyqt5 qsystemtrayicon

3
推荐指数
1
解决办法
1137
查看次数

Tkinter文本小部件-在事件功能中使用单击的文本

我目前有一个日志解析器,可将用户信息放入“文本”小部件中。如果插入到“文本”小部件中的行具有关键字,则该行将突出显示为蓝色。如果单击该行,我想在执行的事件函数中使用该行中的文本。

因为我正在使用标签的config来将线条涂成蓝色,所以我也不能复制单击的文本吗?

代码示例:

from tkinter import *


def callback(event):
    window = Toplevel()
    window.overrideredirect(1)
    window.geometry("200x100+{0}+{1}".format(event.x_root-1, event.y_root-12))
    label = Label(window, justify="left", text="Username: value \nLocation: value \nAddress: value \nSecurity Level: value")
    label.grid()
    window.bind("<Leave>", lambda e: window.destroy())

root = Tk()
text = Text(root)
text.insert(END, "Click here", "tag")
text.pack()
text.tag_config("tag", foreground="blue")
text.tag_bind("tag", "<Button-1>", callback)

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

如何获取被单击的用户名并在函数中使用它?我只想将用户名设置为变量并使用它,而我只是想念如何做到这一点。

python textbox tkinter python-3.x

2
推荐指数
1
解决办法
2542
查看次数

如何在事件中获取小部件名称

from tkinter import *

main = Tk()

def flipper(event):

    # I'd like to do this:
    #if widgetname == switcher:
        #do stuff
    #if widgetname == switcher1:
        #do stuff
    return

switcher = Label(main, bg='white', text="click here", font="-weight bold")
switcher.grid()
switcher.bind("<Button-1>", flipper)


switcher1 = Label(main, bg='white', text="click here", font="-weight bold")
switcher1.grid()
switcher1.bind("<Button-1>", flipper)

switcher2 = Label(main, bg='white', text="click here", font="-weight bold")
switcher2.grid()
switcher2.bind("<Button-1>", flipper)

switcher3 = Label(main, bg='white', text="click here", font="-weight bold")
switcher3.grid()
switcher3.bind("<Button-1>", flipper)

switcher4 = Label(main, bg='white', text="click here", font="-weight bold") …
Run Code Online (Sandbox Code Playgroud)

python tkinter widget python-3.x

2
推荐指数
2
解决办法
6837
查看次数