Просмотр исходного кода

命令行区,实现回车换行导致区域扩大减小

mrh 3 лет назад
Родитель
Сommit
9e4eefb668
4 измененных файлов с 80 добавлено и 106 удалено
  1. 0 44
      hier.py
  2. 30 53
      main_windows.py
  3. 33 4
      ui/MainWindows.ui
  4. 17 5
      ui/ui_MainWindows.py

+ 0 - 44
hier.py

@@ -1,44 +0,0 @@
-from PySide2.QtUiTools import QUiLoader
-from PySide2.QtWidgets import *
-from PySide2.QtGui import *
-from ui.ui_Hier_1 import Ui_Hier_1
-
-class HierWin(Ui_Hier_1, QMainWindow):
-    def __init__(self, parent=None) -> None:
-        super().__init__()
-        self.setupUi(self)
-        self.father = parent
-        self.setWindowTitle('Hier_1')
-        self.comboBox.addItem('Cells All')
-        self.model = QStandardItemModel(4, 2)
-        self.model.setHorizontalHeaderLabels(['Cells Name', 'Ref Name'])
-        item = QStandardItem('REG_11')
-        self.model.setItem(0, 0, item)
-        self.model.setItem(0, 1, QStandardItem('BUGFTEXT'))
-        
-        self.tableView.setModel(self.model)
-        root = QTreeWidgetItem(self.treeWidget)
-        root.setText(0, 'pud_top')
-        root_child_name = ['.vscode', 'log', 'qtGui', 'src']
-        root_child = []
-        i = 1
-        for c in root_child_name:
-            child1 = QTreeWidgetItem(root)
-            child1.setText(0, c)
-            i+=1
-            root_child.append(child1)
-        
-        childs_name =[['al_sweigart_privkey.txt', 'al_sweigart_pubkey.txt', 'LICENSE', 'README.md'],
-        ['mainWinGui.py', 'mainWinGui.ui'], 
-        ['baseconvert.py', 'client.py', 'cryptomath.py', 'exp_mode.py'], 
-        ['baseconvert.cpython-38.pyc', 'baseconvert.cpython-39.pyc', 'client.cpython-38.pyc']]
-        i=0
-        for name_list in childs_name:
-            tree_child = root_child[i]
-            i+=1
-            c = 1
-            for name in name_list:
-                child = QTreeWidgetItem(tree_child)
-                child.setText(0, name)
-                c += 1
-

+ 30 - 53
main_windows.py

@@ -1,6 +1,7 @@
 import queue
 import re
 import sys
+import threading
 from PySide2.QtWidgets import QApplication, QMainWindow
 from PySide2.QtUiTools import QUiLoader
 from PySide2.QtWidgets import *
@@ -8,34 +9,13 @@ from PySide2.QtCore import *
 from PySide2 import QtCore
 from PySide2.QtGui import QTextCursor
 from ui.ui_MainWindows import Ui_MainWindow
-from ui.ui_TimingAnalyze import Ui_TimingWindow
-from hier import HierWin
 from sub_windows import SubWindows
 
-class NcShell(QObject):
-    sig = Signal(str)
-    def __init__(self, thread, GUI):
-        super().__init__()
-        self.stdin = ''
-        self._GUI = GUI
-        self._thread = thread
-        self.queue = queue.Queue()
-
-    def run(self):
-        while 1:
-            stdin = self.queue.get()
-            self._GUI.Shell_Execute(stdin)
-        #     # print('que get:{}'.format(stdin))
-        #     try:
-        #         print(eval(stdin))
-        #     except Exception as e:
-        #         print(e)
-        #     print('demo> ', end='')
         
 class Stream(QObject):
     """Redirects console output to text widget."""
     newText = Signal(str)
-    def __init__(self, stdout=None):
+    def __init__(self):
         super().__init__()
         self.stdout_bak = sys.stdout
         self.buffer = self.stdout_bak.buffer
@@ -75,14 +55,10 @@ class Stream(QObject):
         if text.isspace():
             return
         self.newText.emit(str(text+'\n'))
-        # self.newText.emit(str(text))
-        # loop = QEventLoop()
-        # QTimer.singleShot(100, loop.quit)
-        # loop.exec_()
-        # QApplication.processEvents()
+
 
 class MainWindow(Ui_MainWindow, QMainWindow):
-    lineEdit_sig = Signal(str)
+    textEdit_sig = Signal(str)
     sig = Signal(object)
     def __init__(self, GUI) -> None:
         super().__init__()
@@ -93,20 +69,15 @@ class MainWindow(Ui_MainWindow, QMainWindow):
         self.loader = QUiLoader()
         self.actionReport_Virtual_Timing.triggered.connect(self.add_sub_win)
 
-        self.lineEdit.returnPressed.connect(self.lineEdit_function)
+        self.textEdit.document().contentsChanged.connect(self.textEdit_change_size)
+        self.textEdit.document().contentsChange.connect(self.textEdit_change_contents)
+
         sys.stdout = Stream()
         sys.stdout.newText.connect(self.outputWritten)
         sys.stderr = sys.stdout
-        # sys.stderr.newText.connect(self.outputWritten)
         self.GUI = GUI
         self.setWindowTitle(GUI.Title)
-        
-        self.nc_shell_thread = QThread(self)
-        self.nc_shell = NcShell(self.nc_shell_thread, GUI)
-        self.nc_shell.moveToThread(self.nc_shell_thread)
-        self.nc_shell_thread.started.connect(self.nc_shell.run)
-        self.nc_shell_thread.start()
-        
+                
         self.sub_win = SubWindows(self)
         self.sub_win.sig.connect(self.sub_win.add_windows)
 
@@ -116,22 +87,28 @@ class MainWindow(Ui_MainWindow, QMainWindow):
         cursor.insertText(text)
         self.LogText.setTextCursor(cursor)
         self.LogText.ensureCursorVisible()
-
-    def lineEdit_function(self):
-        stdin = self.lineEdit.text()
-        print(stdin)
-        # stdin = stdin.replace('_GUI', 'self._GUI')
-        self.nc_shell.queue.put_nowait(stdin)
-        # self.nc_shell.stdin = stdin
-        # self.nc_shell_thread.start()
-        # print('eval:', stdin)
-        # stdout = eval(stdin)
-        # print(stdout)
-        # print('send:', self.lineEdit.text())
-        # self.lineEdit_sig.emit(self.lineEdit.text())
-        # sys.stdout.stdout_bak.flush()
-        # self.gui_info
-
+    
+    def textEdit_change_size(self):
+        height = self.textEdit.document().size().height()
+        self.textEdit.setMinimumHeight(height)
+        
+    def textEdit_change_contents(self, from_index, charsRemoved, charsAdded):
+        if not charsAdded:
+            return
+        stdin = self.textEdit.toPlainText()
+        # 捕获回车键
+        if stdin[from_index] != '\n':
+            return
+        # 回车时,判断字符串代码是否结束
+        if self.GUI.Shell_IsCmdFinished(stdin):
+            # 删除回车字符
+            stdin = stdin[:from_index] + stdin[from_index+1:]
+            print(stdin)
+            thread = threading.Thread(target=self.GUI.Shell_Execute, args=(stdin,))
+            thread.start()
+            self.textEdit.setText('')
+            self.textEdit_change_size()
+    
     def add_sub_win(self):
         print('add sub')
         self.t = self.loader.load("ui/TimingAnalyze.ui")

+ 33 - 4
ui/MainWindows.ui

@@ -29,7 +29,7 @@
         <enum>QTabWidget::South</enum>
        </property>
        <property name="currentIndex">
-        <number>2</number>
+        <number>0</number>
        </property>
        <widget class="QWidget" name="LogPage">
         <attribute name="title">
@@ -82,9 +82,38 @@
        </widget>
       </item>
       <item>
-       <widget class="QLineEdit" name="lineEdit">
-        <property name="dragEnabled">
-         <bool>false</bool>
+       <widget class="QTextEdit" name="textEdit">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>23</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16777215</width>
+          <height>16777215</height>
+         </size>
+        </property>
+        <property name="font">
+         <font>
+          <pointsize>12</pointsize>
+         </font>
+        </property>
+        <property name="verticalScrollBarPolicy">
+         <enum>Qt::ScrollBarAlwaysOff</enum>
+        </property>
+        <property name="horizontalScrollBarPolicy">
+         <enum>Qt::ScrollBarAlwaysOff</enum>
+        </property>
+        <property name="lineWrapMode">
+         <enum>QTextEdit::NoWrap</enum>
         </property>
        </widget>
       </item>

+ 17 - 5
ui/ui_MainWindows.py

@@ -175,11 +175,23 @@ class Ui_MainWindow(object):
 
         self.horizontalLayout_2.addWidget(self.pushButton)
 
-        self.lineEdit = QLineEdit(self.centralwidget)
-        self.lineEdit.setObjectName(u"lineEdit")
-        self.lineEdit.setDragEnabled(False)
+        self.textEdit = QTextEdit(self.centralwidget)
+        self.textEdit.setObjectName(u"textEdit")
+        sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.MinimumExpanding)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.textEdit.sizePolicy().hasHeightForWidth())
+        self.textEdit.setSizePolicy(sizePolicy)
+        self.textEdit.setMinimumSize(QSize(0, 23))
+        self.textEdit.setMaximumSize(QSize(16777215, 16777215))
+        font1 = QFont()
+        font1.setPointSize(12)
+        self.textEdit.setFont(font1)
+        self.textEdit.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
+        self.textEdit.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
+        self.textEdit.setLineWrapMode(QTextEdit.NoWrap)
 
-        self.horizontalLayout_2.addWidget(self.lineEdit)
+        self.horizontalLayout_2.addWidget(self.textEdit)
 
 
         self.gridLayout.addLayout(self.horizontalLayout_2, 1, 0, 1, 1)
@@ -264,7 +276,7 @@ class Ui_MainWindow(object):
 
         self.retranslateUi(MainWindow)
 
-        self.tabWidget.setCurrentIndex(2)
+        self.tabWidget.setCurrentIndex(0)
 
 
         QMetaObject.connectSlotsByName(MainWindow)