闲言碎语

:),OK.又叒叕另起炉灶了,好吧.那就改名叫动物派对脚本开发日记吧.

国庆节感冒了,太难受了,难过.

写这篇文章的时候比较烦躁,可能写的不太能看得懂,有啥想问的直接留言就行

GUI实时显示CMD输出

写这玩意写了两天.

直接说下原理吧,就是用pyqtSignal类.pyqtSignal类是自定义的信号类,功能强大,具体不细讲.

先讲下我遇到的难点,最初并无打算把这个项目写成有体系的项目,只是为了自己用一用,所以结构很糟糕,业务代码是单独在一个文件,没有和GUI的继承类写在一起.

我的难点是实时输出窗口和操作窗口不是一个界面,所以需要两者用pyqtSignal传递信息,而业务逻辑代码不在操作窗口,所以起初想的是如何获取操作台的所有输出,然后传递给输出窗口.而我又用Qthread来进行业务逻辑,所以还得Qthread先传递给操作窗口才行.


用了PyqtFluentUI的组件库,自带了一个带导航栏的类,再给这个类添加子窗口就可以实现导航栏窗口跳转了,所以现在结构是Qthread→逻辑代码→页面继承类→导航栏页面类→页面继承类

首先把业务逻辑代码写在QThread类中,这样Qthread类才能传递消息给控制界面继承类.

嵌套就行了(不想写了)

Controlwindow

class WorkerThread(QThread):
   send_signal = pyqtSignal(str)
   send_singal.emit(message)
class controlWin_inter(QMainWindow,Ui_mainWindow):
   print_signal = pyqtSignal(str)
       def start_operation_thread(self, operation_func, *args, **kwargs):
       if not self.operation_thread or not self.operation_thread.isRunning():
           self.operation_thread = WorkerThread(operation_func, *args, **kwargs)
           self.operation_thread.send_signal.connect(self.sendmessage)
       def sendmessage(self,str):
      self.print_signal.emit(str)

mainWin

class mainwindow(SplitFluentWindow):
       def __init__(self):
      super().__init__()
          self.controwin=controlWin_inter()
      self.addSubInterface(self.controwin, myIcon.GAME, "游戏")
      self.cmdoutput = cmdoutput()
      self.addSubInterface(self.cmdoutput, myIcon.CMD, "统计")
          self.controwin.print_signal.connect(self.cmdoutput.append_to_log)

CmdOutWin

class cmdoutput(QWidget, Ui_Cmdoutput):
   def append_to_log(self, text):
       cursor = self.Cmd.textCursor()
       cursor.movePosition(QTextCursor.End)
       cursor.insertText(text)
       self.Cmd.setTextCursor(cursor)

Github release检测更新

不多说了,直接看代码current_version = 1.70


def check_version(self):
       latest_version= requests.get('https://api.github.com/repos/q1263868407/animal-auto/releases/latest').json()['tag_name'][1:]
       if current_version<float(latest_version):
           业务逻辑代码

imgs

image-20231002220043174
image-20231002220108922
image-20231002220118642

Angel,请你不要放开我的手