Beispiel #1
0
class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        #窗口设置
        self.setGeometry(300, 300, 300, 320)
        self.setWindowTitle('聊天室')
        self.setWindowIcon(QIcon('timg.jpg'))  #设置窗口图标
        #按钮设置
        btn = QPushButton('Button', self)
        btn.move(200, 200)
        btn.resize(100, 120)
        btn.clicked.connect(self.Onchanged)
        #消息框
        self.textbox = QLineEdit(self)
        self.textbox.move(0, 200)
        self.textbox.resize(200, 120)
        #label设置
        self.lb1 = QLabel(self)
        self.show()

    def Onchanged(self, text):
        txt = self.textbox.text()
        MySQL_Op.InsertTB(txt)
        self.lb1.setText(txt)
        self.lb1.adjustSize()
Beispiel #2
0
	def initUI(self):
		#窗口显示在屏幕中央
		self.center()
		#设置窗口大小为宽500,高300
		self.resize(500,300)
		#窗口标题
		self.setWindowTitle('抢票软件V1.0')
		#查询刷票按钮
		qy = QPushButton("刷票",self)
		qy.resize(40,30)
		qy.move(450,80)
		#登录按钮
		lbt = QPushButton('登录',self)
		lbt.resize(40,30)
		lbt.move(400,20)
		#验证码图片按钮
		vbt = QPushButton('选择验证码',self)
		vbt.resize(80,30)
		vbt.move(300,20)


		#创建文本框
		username = QLineEdit(self)
		username.resize(100, 30)
		username.move(20, 20)
		password = QLineEdit(self)
		password.resize(100, 30)
		password.move(140, 20)

		# 按钮点击事件关联
		#self.button.clicked.connect(self.on_click)

		#显示在屏幕上
		self.show()
Beispiel #3
0
class App(QWidget):
    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 textbox'
        self.left = 10
        self.top = 10
        self.width = 320
        self.height = 200
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        # create textbox
        self.textbox = QLineEdit(self)
        self.textbox.move(20, 20)
        self.textbox.resize(280, 40)

        # Create a button in the window
        self.button = QPushButton('show text', self)
        self.button.move(20, 80)

        # connect button to function on_click
        self.button.clicked.connect(self.on_click)
        self.show()

    @pyqtSlot()
    def on_click(self):
        textboxValue = self.textbox.text()
        QMessageBox.question(self, "Message", 'You typed:' + textboxValue,
                             QMessageBox.Ok, QMessageBox.Ok)
        """打印完毕之后清空文本框"""
        self.textbox.setText('')
Beispiel #4
0
class App(QWidget):
    def __init__(self):
        '''
        初始化操作
        '''
        # 调用父类QWidget的方法
        super().__init__()
        # 对话框标题文字
        self.title = '人人都是Pythonista'
        # 对话框初始显示位置(从屏幕左边开始往右数)
        self.left = 200
        # 对话框的初始高度(从屏幕上面开始往下数)
        self.top = 250
        # 对话框宽
        self.width = 500
        # 对话框高
        self.height = 500
        # 初始化时执行页面ui初始化方法
        self.initUI()

    def initUI(self):
        '''
        页面ui初始化
        '''
        # 设置窗口标题
        self.setWindowTitle(self.title)
        # 设置窗口初始位置
        self.setGeometry(self.left, self.top, self.width, self.height)
        # 设置窗口小图标(icon)
        self.setWindowIcon(QtGui.QIcon('icon.jpg'))
        # 创建文本框
        self.textbox = QLineEdit(self)
        # 文本框在界面中的初始位置(左上角的位置)
        self.textbox.move(20, 30)
        # 文本框的尺寸(长,宽)
        self.textbox.resize(400, 300)

        # 创建一个按钮
        self.button = QPushButton('在这里点击', self)
        # 按钮的初始位置(左上角的位置)
        self.button.move(20, 340)

        # 将按钮点击事件与下面的on_click方法关联起来
        self.button.clicked.connect(self.on_click)
        # 弹出对话框
        self.show()

    @pyqtSlot()
    def on_click(self):
        '''
        点击事件
        '''
        # 获取文本框中输入的值
        textboxValue = self.textbox.text()
        # 弹出对话框
        QMessageBox.question(self, "Message", '你输入了这些内容:' + textboxValue,
                             QMessageBox.Ok, QMessageBox.Ok)
        # 点击以后清空文本框
        self.textbox.setText('')
Beispiel #5
0
class App(QWidget):
    def __init__(self):
        super(App, self).__init__(None)
        self.title = 'steering angle test'
        self.left = 10
        self.top = 10
        self.width = 400
        self.height = 400
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        self.max_angle_label = QLabel("max_angle", self)
        self.max_angle_label.move(20, 20)
        self.max_angle_label.resize(80, 40)
        self.max_angle_text = QLineEdit('450', self)
        self.max_angle_text.move(120, 20)
        self.max_angle_text.resize(240, 40)

        self.angle_label = QLabel("angle", self)
        self.angle_label.move(20, 60)
        self.angle_label.resize(80, 40)
        self.angle_text = QLineEdit('450', self)
        self.angle_text.move(120, 60)
        self.angle_text.resize(240, 40)

        self.times_label = QLabel("times", self)
        self.times_label.move(20, 100)
        self.times_label.resize(80, 40)
        self.times_text = QLineEdit('10', self)
        self.times_text.move(120, 100)
        self.times_text.resize(240, 40)

        self.discret_label = QLabel("discret", self)
        self.discret_label.move(20, 140)
        self.discret_label.resize(80, 40)
        self.discret_text = QLineEdit('200', self)
        self.discret_text.move(120, 140)
        self.discret_text.resize(240, 40)

        self.test_button = QPushButton('test', self)
        self.test_button.move(20, 240)
        self.test_button.resize(360, 40)

        # connect button to function on_click

        self.test_button.clicked.connect(self.on_test_click)

        self.show()

    def on_test_click(self):

        sendVehicleCmd(vehicle_info.steering_angle,
                       int(self.angle_text.text()),
                       int(self.max_angle_text.text()),
                       int(self.times_text.text()),
                       int(self.discret_text.text()))
Beispiel #6
0
class Logwindow(QWidget):
    def __init__(self):
        super().__init__()
        self.InitGUI()

    def InitGUI(self):
        self.lab1 = QLabel('账号', self)
        self.lab1.move(23, 30)
        self.lab2 = QLabel('密码', self)
        self.lab2.move(23, 80)
        self.text1 = QLineEdit(self)
        self.text1.move(50, 30)
        self.text1.resize(150, 15)
        self.text2 = QLineEdit(self)
        self.text2.move(50, 80)
        self.text2.resize(150, 15)
        self.text2.setEchoMode(QLineEdit.Password)
        self.btn = QPushButton('登陆', self)
        self.btn.move(30, 150)
        self.btn.clicked.connect(lambda: self.check())
        self.btn2 = QPushButton('退出', self)
        self.btn2.move(150, 150)
        self.btn2.clicked.connect(lambda: QCoreApplication.instance().quit())
        self.setWindowTitle('登录')
        self.resize(250, 250)
        self.center()
        self.show()

    def center(self):
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

    def check(self):
        acc = self.text1.text()
        pas = self.text2.text()
        #if(check.check(acc,pas)):
        if (True):
            MW = M.MainW(acc)
            self.close()
            pass
        else:
            QMessageBox.critical(self, 'login', '账号密码错误')
Beispiel #7
0
class App(QWidget):

    def __init__(self):
        super(App, self).__init__(None)
        self.title = 'tos monitor'
        self.left = 10
        self.top = 10
        self.width = 400
        self.height = 400
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        self.period_label = QLabel("period", self)
        self.period_label.move(20, 20)
        self.period_label.resize(80, 40)
        self.period_text = QLineEdit('45', self)
        self.period_text.move(120, 20)
        self.period_text.resize(240, 40)

        self.times_label = QLabel("times", self)
        self.times_label.move(20, 80)
        self.times_label.resize(80, 40)
        self.times_text = QLineEdit('100', self)
        self.times_text.move(120, 80)
        self.times_text.resize(240, 40)



        self.cali_button = QPushButton('calibration', self)
        self.cali_button.move(20, 200)
        self.cali_button.resize(360, 40)



        # connect button to function on_click
        self.cali_button.clicked.connect(self.on_cali_click)
        self.show()

    def on_cali_click(self):
        sendVehicleCmd(float(self.period_text.text()), int(self.times_text.text()))
class App(QWidget):

    def __init__(self):
        super().__init__()
        self.title = '随机数'
        self.left = 300
        self.top = 300
        self.width = 320
        self.height = 200
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        # create textbox
        self.textbox = QLineEdit(self)
        self.textbox.move(20, 20)
        self.textbox.resize(280, 40)

        # Create a button in the window
        self.button = QPushButton('确定', self)
        self.button.move(20, 80)

        # connect button to function on_click
        self.button.clicked.connect(self.on_click)
        self.show()

    @pyqtSlot()
    def on_click(self):
        textboxValue = self.textbox.text()
        number = textboxValue.split(' ')
        while True:
            number = list(set(number))
            if len(number) <= 4:
                number.append(random.randrange(1,10))
            elif len(list(set(number))) == 5:
                break
        QMessageBox.question(self, "Message", 'You typed:' + str(number),
                             QMessageBox.Ok, QMessageBox.Ok)
        self.textbox.setText(str(number).replace('\'','').replace('[','').replace(']','').replace(' ',''))
Beispiel #9
0
class App(QWidget):
    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 textbox'
        self.left = 20
        self.top = 20
        self.width = 640
        self.height = 400
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        # create textbox
        self.textbox = QLineEdit(self)
        self.textbox.move(40, 40)
        self.textbox.resize(560, 80)

        # Create a button in the window
        self.button = QPushButton('get triple', self)
        self.button.move(500, 160)

        # connect button to function on_click
        self.button.clicked.connect(self.on_click)
        self.show()

    @pyqtSlot()
    def on_click(self):
        textboxValue = self.textbox.text()
        pre_relation = svm_pre(textboxValue,
                               utils_path='../baseline_svm/utils')

        # QMessageBox.question(self, "Message", 'Relation: ' + pre_relation[0],
        #                      QMessageBox.Ok, QMessageBox.Ok)
        QMessageBox.about(self, 'Triple', pre_relation[0])
        """打印完毕之后清空文本框"""
        self.textbox.setText('')
Beispiel #10
0
class App(QWidget):
    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 textbox'
        self.left = 10
        self.top = 10
        self.width = 320
        self.height = 200
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        # create textbox
        self.textbox = QLineEdit(self)
        self.textbox.move(20, 20)
        self.textbox.resize(280, 40)

        # Create a button in the window
        self.button = QPushButton('show text', self)
        self.button.move(20, 80)

        # connect button to function on_click
        self.button.clicked.connect(self.on_click)
        self.show()

    @pyqtSlot()
    def on_click(self):
        with open('/Users/sheldonwong/workspace/github/algo/tool/1.txt',
                  'r') as f:
            lines = f.readlines()
        lines_str = ''.join(lines)
        self.textbox.setText(lines_str)
        #textboxValue = self.textbox.text()
        #QMessageBox.question(self, "Message", 'You typed:' + textboxValue,
        #                     QMessageBox.Ok, QMessageBox.Ok)
        """打印完毕之后清空文本框"""
Beispiel #11
0
class App(QWidget):
    def __init__(self):
        super().__init__()
        self.title = 'BAIKE_HOOKER'
        self.left = 10
        self.top = 10
        self.width = 320
        self.height = 150
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        # create textbox
        self.textbox = QLineEdit(self)
        self.textbox.move(20, 20)
        self.textbox.resize(280, 30)

        # create label
        self.labelFIR = QLabel("EVERY_HOOKER", self)
        self.labelFIR.move(120, 5)
        self.labelSEC = QLabel("轻松获取网站的内容到本地", self)
        self.labelSEC.move(80, 60)

        # Create a button in the window
        self.button = QPushButton('START', self)
        self.button.move(120, 100)

        # connect button to function on_click
        self.button.clicked.connect(self.on_click)
        self.show()

    @pyqtSlot()
    def on_click(self):
        url = self.textbox.text()
        html2mjo(url)
Beispiel #12
0
checkp.move(220, 20)

# Флажок цифры
checkc = QCheckBox('Цифры', window)
checkc.move(20, 60)

# Поле для ввода целых чисел
label = QtWidgets.QLabel('Количество символов', window)
label.move(80, 102)
spin = QSpinBox(window)
spin.move(30, 100)
spin.setValue(6)

# Однострочное текстовое поле
tekst = QLineEdit(window)
tekst.resize(150, 25)
tekst.move(20, 160)

# Кнопка буфер обмена
buttonb = QtWidgets.QPushButton("В буфер", window)
buttonb.resize(80, 30)
buttonb.move(20, 210)
buttonb.clicked.connect(on_buff)

# Кнопка выход
buttone = QtWidgets.QPushButton("Выход", window)
buttone.resize(80, 30)
buttone.move(240, 210)
buttone.clicked.connect(app.quit)  # Выход из программы

# Старт
Beispiel #13
0
class Window(QMainWindow):
    def __init__(self):
        super().__init__()
        self.title = "window"
        self.top = 200
        self.left = 200
        self.width = 1000
        self.height = 800
        self.CreatInteraction()
        self.InitWindow()
        self.num = 0
        self.files_name = []

    def InitWindow(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        self.show()

    def CreatInteraction(self):
        #按键
        self.button_load = QPushButton("加载", self)
        self.button_load.setGeometry(QRect(0, 0, 80, 25))
        self.button_load.clicked.connect(self.LoadFile)

        self.button_load = QPushButton("h", self)
        self.button_load.setGeometry(QRect(100, 0, 60, 25))
        self.button_load.clicked.connect(self.Fileh)
        self.button_load = QPushButton("j", self)
        self.button_load.setGeometry(QRect(100, 30, 60, 25))
        self.button_load.clicked.connect(self.Filej)
        self.button_load = QPushButton("k", self)
        self.button_load.setGeometry(QRect(100, 60, 60, 25))
        self.button_load.clicked.connect(self.Filek)
        self.button_load = QPushButton("l", self)
        self.button_load.setGeometry(QRect(100, 90, 60, 25))
        self.button_load.clicked.connect(self.Filel)

        self.button_load = QPushButton("跳转", self)
        self.button_load.setGeometry(QRect(800, 100, 60, 25))
        self.button_load.clicked.connect(self.jump)

        self.press_h = QShortcut("h", self)
        self.press_j = QShortcut("j", self)
        self.press_k = QShortcut("k", self)
        self.press_l = QShortcut("l", self)
        self.press_h.activated.connect(self.hPart)
        self.press_j.activated.connect(self.jPart)
        self.press_k.activated.connect(self.kPart)
        self.press_l.activated.connect(self.lPart)

        self.textbox_h = QLineEdit(self)
        self.textbox_h.move(180, 0)
        self.textbox_h.resize(400, 25)
        self.num_h = QLineEdit(self)
        self.num_h.move(600, 0)
        self.num_h.resize(80, 25)

        self.textbox_j = QLineEdit(self)
        self.textbox_j.move(180, 30)
        self.textbox_j.resize(400, 25)
        self.num_j = QLineEdit(self)
        self.num_j.move(600, 30)
        self.num_j.resize(80, 25)

        self.textbox_k = QLineEdit(self)
        self.textbox_k.move(180, 60)
        self.textbox_k.resize(400, 25)
        self.num_k = QLineEdit(self)
        self.num_k.move(600, 60)
        self.num_k.resize(80, 25)

        self.textbox_l = QLineEdit(self)
        self.textbox_l.move(180, 90)
        self.textbox_l.resize(400, 25)
        self.num_l = QLineEdit(self)
        self.num_l.move(600, 90)
        self.num_l.resize(80, 25)

        self.textbox_msg = QLineEdit(self)
        self.textbox_msg.move(100, 120)
        self.textbox_msg.resize(500, 100)
        self.textbox_total = QLineEdit(self)
        self.textbox_total.setGeometry(QRect(700, 50, 80, 25))
        self.textbox_now = QLineEdit(self)
        self.textbox_now.setGeometry(QRect(700, 100, 80, 25))

        self.to_ward = QShortcut("d", self)
        self.back_ward = QShortcut("a", self)
        self.to_ward.activated.connect(self.Toward)
        self.back_ward.activated.connect(self.Backward)
        #        self.shortcut = QShortcut("u", self.Delete)
        self.plt = pg.PlotWidget(self)
        self.plt.move(30, 280)
        self.plt.resize(800, 400)

    def LoadFile(self):  #载入文件
        self.directory = QFileDialog.getExistingDirectory(self, "选取文件夹",
                                                          "./")  # 起始路径
        self.root = os.path.abspath(os.path.join(self.directory, ".."))
        for file in os.listdir(self.directory):
            self.files_name.append(os.path.join(self.directory, file))
        self.len = len(self.files_name)
        self.file_name = os.path.join(self.directory,
                                      self.files_name[self.num])
        if os.path.exists(self.file_name):
            self.pltshow(self.file_name)
        self.textbox_total.setText(str(self.len))

    def Fileh(self):
        self.dir_h = QFileDialog.getExistingDirectory(self, "选取文件夹", self.root)
        self.textbox_h.setText(str(self.dir_h))

    def Filej(self):
        self.dir_j = QFileDialog.getExistingDirectory(self, "选取文件夹", self.root)
        self.textbox_j.setText(str(self.dir_j))

    def Filek(self):
        self.dir_k = QFileDialog.getExistingDirectory(self, "选取文件夹", self.root)
        self.textbox_k.setText(str(self.dir_k))

    def Filel(self):
        self.dir_l = QFileDialog.getExistingDirectory(self, "选取文件夹", self.root)
        self.textbox_l.setText(str(self.dir_l))

    def Toward(self):
        self.num += 1
        if self.num > self.len:
            self.num = self.len
        self.file_name = os.path.join(self.directory,
                                      self.files_name[self.num])
        if os.path.exists(self.file_name):
            self.pltshow(self.file_name)

    def Backward(self):
        self.num -= 1
        if self.num < 0:
            self.num = 0
        self.file_name = os.path.join(self.directory,
                                      self.files_name[self.num])
        if os.path.exists(self.file_name):
            self.pltshow(self.file_name)

    def jump(self):
        self.num = int(self.textbox_now.text())
        if os.path.exists(self.file_name):
            self.pltshow(self.file_name)

    def hPart(self):
        if os.path.exists(self.dir_h):
            shutil.move(self.file_name, self.dir_h)

    def jPart(self):
        if os.path.exists(self.dir_j):
            shutil.move(self.file_name, self.dir_j)

    def kPart(self):
        if os.path.exists(self.dir_k):
            shutil.move(self.file_name, self.dir_k)

    def lPart(self):
        if os.path.exists(self.dir_l):
            shutil.move(self.file_name, self.dir_l)

    def pltshow(self, path):
        #       self.
        self.plt.clear()
        sig = open(path, "rb").read()
        sig = [i for i in sig if i != 0]
        sig = np.array(sig[0:12 * int(len(sig) / 12)])
        data = sig.reshape(int(len(sig) / 12), 12).T
        self.plt.setXRange(0, 256, padding=0)
        self.plt.setYRange(0, 180, padding=0)
        self.plt.plot(data[10])
        self.textbox_now.setText(str(self.num))
        try:
            self.num_h.setText(
                str(
                    len([
                        name for name in os.listdir(self.dir_h)
                        if os.path.isfile(os.path.join(self.dir_h, name))
                    ])))
        except:
            pass
        try:
            self.num_j.setText(
                str(
                    len([
                        name for name in os.listdir(self.dir_j)
                        if os.path.isfile(os.path.join(self.dir_j, name))
                    ])))
        except:
            pass
        try:
            self.num_k.setText(
                str(
                    len([
                        name for name in os.listdir(self.dir_k)
                        if os.path.isfile(os.path.join(self.dir_k, name))
                    ])))
        except:
            pass
        try:
            self.num_l.setText(
                str(
                    len([
                        name for name in os.listdir(self.dir_l)
                        if os.path.isfile(os.path.join(self.dir_l, name))
                    ])))
        except:
            pass
class App(QWidget):
    def __init__(self):
        super().__init__()
        self.title = "WLAN入侵检测"
        self.left = 10
        self.top = 10
        self.width = 280
        self.height = 200
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        # 信道
        self.label1 = QLabel(self)
        self.label1.setText("Channel:")
        self.label1.move(48, 20)

        self.channel = QLineEdit(self)
        self.channel.move(110, 20)
        self.channel.resize(50, 20)
        self.channel.setText("9")

        # 时长
        self.label2 = QLabel(self)
        self.label2.setText("Duration(s):")
        self.label2.move(30, 50)

        self.duration_time = QLineEdit(self)
        self.duration_time.move(110, 50)
        self.duration_time.resize(50, 20)
        self.duration_time.setText("inf")

        # 缓存路径
        self.label3 = QLabel(self)
        self.label3.setText("Storage Path:")
        self.label3.move(18, 80)

        self.buffer_path = QLineEdit(self)
        self.buffer_path.move(110, 80)
        self.buffer_path.resize(150, 20)
        self.buffer_path.setText("/tmp/capture/")

        # 启动按钮
        self.activate = QPushButton('Activate', self)
        self.activate.move(50, 130)
        self.activate.clicked.connect(self.on_click1)

        # 停止按钮
        self.stop = QPushButton('Stop', self)
        self.stop.move(150, 130)
        self.stop.clicked.connect(self.on_click2)

        # 初始化线程
        self.cap_thread = threading.Thread()
        self.ins_thread = threading.Thread()

        os.popen("airport -z")

        self.show()

    def on_click1(self):
        # 获取参数
        channel = self.channel.text()
        duration_time = self.duration_time.text()
        if duration_time == "inf" or duration_time == "":
            duration_time = "99999"
        buffer_path = self.buffer_path.text()

        if self.cap_thread.isAlive() or self.ins_thread.isAlive():
            print("*** Detection in progress! *** ")
        else:
            # Ensure the buffer directory
            if os.path.exists(buffer_path):
                for _, _, file_names in os.walk(buffer_path):
                    for file_name in file_names:
                        os.remove(buffer_path + file_name)
            else:
                os.makedirs(buffer_path)

            # 设置线程
            self.cap_thread = threading.Thread(target=live_capture,
                                               args=(channel, duration_time,
                                                     buffer_path))
            self.ins_thread = threading.Thread(target=inspect_thread,
                                               args=(buffer_path, ))

            # 开始线程
            self.cap_thread.start()
            self.ins_thread.start()

    def on_click2(self):
        if self.cap_thread.isAlive() or self.ins_thread.isAlive():
            # 杀掉进程
            PIDs = os.popen("ps -e | grep 'tshark' | awk '{print $1}'").read()
            PID = ""
            for i in range(10):
                if i < len(PIDs):
                    if not PIDs[i] == '\n':
                        PID = PID + PIDs[i]
                    else:
                        break
            os.popen("kill -9 " + PID).read()
        else:
            print("*** No Detection is on! ***")

    def closeEvent(self, event):
        if self.cap_thread.isAlive() or self.ins_thread.isAlive():
            # 杀掉进程
            PIDs = os.popen("ps -e | grep 'tshark' | awk '{print $1}'").read()
            PID = ""
            for i in range(10):
                if i < len(PIDs):
                    if not PIDs[i] == '\n':
                        PID = PID + PIDs[i]
                    else:
                        break
            os.popen("kill -9 " + PID)
        os.popen("ifconfig en0 up")
Beispiel #15
0
class myWind(QWidget):
    msg = MSG()
    
    def __init__(self):
        super().__init__()
        self.initUI()
        
    def initUI(self):
        QToolTip.setFont(QFont('SansSerif', 10))

        #textedit
        self.textbox = QTextEdit(self)
        self.textbox.move(20, 30)
        self.textbox.resize(300, 400)
        
        #label
        self.lbl1 = QLabel(self)
        self.lbl1.setText(url1)
        self.lbl1.move(20, 13)

        #label
        self.lbl2 = QLabel(self)
        self.lbl2.setText(url2)
        self.lbl2.move(200, 13)

        #label
        self.lblPhone = QLabel(self)
        self.lblPhone.setText("电话号码")
        self.lblPhone.move(23, 463)

        #lineedit
        self.linebox = QLineEdit(self)
        self.linebox.setText(ip)
        self.linebox.move(60, 10)

        #lineedit
        self.linePhone = QLineEdit(self)
        self.linePhone.move(100,460)
        self.linePhone.setText(phone)
        self.linePhone.resize(120, 20)

        #lineedit
        self.lineMsg = QLineEdit(self)
        self.lineMsg.move(20, 490)
        self.lineMsg.resize(200, 20)
        self.lineMsg.returnPressed.connect(self.msgMsg)

        #combox
        self.cbox = QComboBox(self)
        self.cbox.insertItem(0,self.tr("DK"))
        self.cbox.insertItem(1,self.tr("CS"))
        self.cbox.insertItem(2,self.tr("GP"))
        self.cbox.move(130,522)
        
        #button
        self.btn = QPushButton('退出', self)
        self.btn.clicked.connect(lambda:self.msgLeave())
        self.btn.setToolTip('This is a <b>QPushButton</b> widget')
        self.btn.resize(self.btn.sizeHint())
        self.btn.move(230,520)
        self.btn.setEnabled(False)

        self.btnReset = QPushButton('重置', self)
        self.btnReset.clicked.connect(lambda:self.reset())
        self.btnReset.setToolTip('This is a <b>QPushButton</b> widget')
        self.btnReset.resize(self.btnReset.sizeHint())
        self.btnReset.move(20,520)

        self.btnEnter = QPushButton('发送登录', self)
        self.btnEnter.clicked.connect(lambda:self.msgEnter())
        self.btnEnter.setToolTip('This is a <b>QPushButton</b> widget')
        self.btnEnter.resize(self.btnEnter.sizeHint())
        self.btnEnter.move(230,460)

        self.btnMsg = QPushButton('发送消息', self)
        self.btnMsg.clicked.connect(lambda:self.msgMsg())
        self.btnMsg.setToolTip('This is a <b>QPushButton</b> widget')
        self.btnMsg.resize(self.btnMsg.sizeHint())
        self.btnMsg.move(230,490)
        self.btnMsg.setEnabled(False)

        self.btnleav1 = QPushButton('用户暂离', self)
        self.btnleav1.clicked.connect(lambda:self.msgWait())
        self.btnleav1.setToolTip('This is a <b>QPushButton</b> widget')
        self.btnleav1.resize(self.btnleav1.sizeHint())
        self.btnleav1.move(20,435)
        self.btnleav1.setEnabled(False)

        
        #Widget
        self.setGeometry(500,700,700,520)
        self.setWindowTitle('CStes')
        self.setWindowIcon(QIcon('ai.png'))
        self.resize(350, 550)
        #self.move(300, 300) 位置
        self.center()
        self.show()
        
    def closeEvent(self, event):
        reply = QMessageBox.question(self, '提示', "确定退出?",
                                     QMessageBox.Yes|QMessageBox.No, QMessageBox.No)
        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()

    def center(self):
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

    def msgEnter(self):
        global phone
        global ip
        ip = self.linebox.text()
        phone=self.linePhone.text()
        Type=self.cbox.currentText()
        if len(phone) == 0 :
            reply = QMessageBox.question(self, '提示', "没有电话号码",
                                     QMessageBox.Yes, QMessageBox.Yes)
            return
        self.textbox.moveCursor(QTextCursor.End)
        callid = "2c4146f8-6afe-11e8-8cb2-" + phone
        self.msg.set(phone, callid)
        print(phone)
        insertType(self.msg.phone, self.msg.callid, Type)
        content = self.msg.enter()
        txt = "机器人:" + tansContent(content)
        self.textbox.append(txt)

        self.btn.setEnabled(True)
        self.btnMsg.setEnabled(True)
        self.btnleav1.setEnabled(True)

    def msgLeave(self):
        self.msg.leave()

    def msgWait(self):
        content = self.msg.wait()
        print("content:" + content)
        txt = "机器人:" + tansContent(content)
        self.textbox.append(txt)
        
    def msgMsg(self):
        self.textbox.moveCursor(QTextCursor.End)
        if len(self.lineMsg.text()) == 0 :
            reply = QMessageBox.question(self, '提示', "内容为空",
                                     QMessageBox.Yes, QMessageBox.Yes)
            return
        content = "用户  :" + self.lineMsg.text()
        self.textbox.append(content)
        content = self.msg.message(self.lineMsg.text(), "false")
        self.lineMsg.setText("")
        print("content:" + content)
        txt = "机器人:" + tansContent(content)
        self.textbox.append(txt)

        content = self.msg.playResult("")
        while content != "" :
            print("content:" + content)
            txt = "机器人:" + tansContent(content)
            self.textbox.append(txt)
            content = self.msg.playResult("")
        
    def reset(self):
        self.textbox.setText("")
        self.linePhone.setText("")
Beispiel #16
0
class MainWindow(QMainWindow):
    # 求解完成信号
    done1Signal = pyqtSignal(str)
    done2Signal = pyqtSignal(str)


    def __init__(self):
        super().__init__()
        # 移动两根火柴和移动一根火柴的按钮
        self.twobtn = QPushButton(self)
        self.onebtn = QPushButton(self)
        # 文本输入框以及提示字符,接受输入的等式
        self.tip1 = QLabel(self)
        self.facin1 = QLineEdit(self)
        self.opin = QLineEdit(self)
        self.tipop = QLabel(self)
        self.facin2 = QLineEdit(self)
        self.tip2 = QLabel(self)
        self.ansin = QLineEdit(self)
        self.equaop = QLabel(self)
        self.tipans = QLabel(self)
        self.toolbar = QToolBar()
        # 数码管显示,由于算符无法使用故使用QLabel代替
        self.lcd1 = QLCDNumber(self)
        self.lcd2 = QLCDNumber(self)
        self.lcd3 = QLCDNumber(self)
        self.lcd1.setDigitCount(2)
        self.lcd2.setDigitCount(2)
        self.lcd3.setDigitCount(2)
        self.lcd1.setMode(QLCDNumber.Dec)
        self.lcd2.setMode(QLCDNumber.Dec)
        self.lcd3.setMode(QLCDNumber.Dec)
        self.lcd1.setSegmentStyle(QLCDNumber.Flat)
        self.lcd1.setStyleSheet("border: 2px solid black; color: green; background: silver;")
        self.lcd2.setSegmentStyle(QLCDNumber.Flat)
        self.lcd2.setStyleSheet("border: 2px solid black; color: green; background: silver;")
        self.lcd3.setSegmentStyle(QLCDNumber.Flat)
        self.lcd3.setStyleSheet("border: 2px solid black; color: green; background: silver;")
        self.lcdop = QLabel(self)
        self.lcdeq = QLabel(self)
        # 上翻,下翻展示
        self.last = QPushButton(self)
        self.next = QPushButton(self)
        # 提示信息,提示是否有解,有解还将显示难度系数
        self.tips = QTextBrowser(self)
        # 程序名及版本号
        self.version = 'SmartMatch_v1.1.18'
        # 帮助子窗口
        self.help = HelpWindow()
        # 等式库子窗口
        self.lib = LibraryWindow()
        # 移动一根所有变化的状态空间
        self.closed1 = []
        # 移动两根所有变化的状态空间
        self.closed2 = []
        # 等式列表
        self.showlist = []
        # 是否可保存
        self.allowed = 0
        # 等式列表中当前的等式序号
        self.now = 0
        # 输入为等式的标记
        self.initeq = 0
        # 状态栏
        self.status = self.statusBar()
        self.init_ui()

    def init_ui(self):
        # 两个列表存放搜索结果

        # 默认使用了我的桌面分辨率大小的标准尺寸
        width = 1440
        height = 900
        x = width / 4
        y = height / 4
        w = width / 2
        h = height / 2

        # 创建全屏主窗口
        self.setGeometry(x, y, w, h)
        self.setWindowTitle(self.version)
        self.setWindowIcon(QIcon("../images/icon.jpg"))

        #设置主窗口背景
        palette = QPalette()
        palette.setBrush(self.backgroundRole(), QBrush(QPixmap('../images/background.png')))
        self.setPalette(palette)

        # 进入后的提示信息
        self.status.showMessage("欢迎")

        # 创建工具栏
        self.addToolBar(self.toolbar)

        self.facin1.move(w / 6, h / 4)
        self.facin1.resize(w / 12, h / 12)
        self.facin1.setMaxLength(2)
        self.facin1.setFont(QFont('Roman times', 20, QFont.DemiBold))
        self.facin1.setAlignment(Qt.AlignCenter)

        self.tip1.move(w / 6, h / 6)
        self.tip1.resize(w / 12, h / 12)
        self.tip1.setText('Number1:')
        self.tip1.setFont(QFont('Roman times', 12, QFont.DemiBold))
        self.tip1.setAlignment(Qt.AlignCenter)

        self.opin.move(w/3, h / 4)
        self.opin.resize(w / 24, h / 12)
        self.opin.setMaxLength(1)
        self.opin.setFont(QFont('Roman times', 20, QFont.DemiBold))
        self.opin.setAlignment(Qt.AlignCenter)

        self.tipop.move(5*w/16, h / 6)
        self.tipop.resize(w / 12, h / 12)
        self.tipop.setText('Operator:')
        self.tipop.setFont(QFont('Roman times', 12, QFont.DemiBold))
        self.tipop.setAlignment(Qt.AlignCenter)

        self.facin2.move(11*w/24, h / 4)
        self.facin2.resize(w / 12, h / 12)
        self.facin2.setMaxLength(2)
        self.facin2.setFont(QFont('Roman times', 20, QFont.DemiBold))
        self.facin2.setAlignment(Qt.AlignCenter)

        self.tip2.move(11*w/24, h / 6)
        self.tip2.resize(w / 12, h / 12)
        self.tip2.setText('Number2:')
        self.tip2.setFont(QFont('Roman times', 12, QFont.DemiBold))
        self.tip2.setAlignment(Qt.AlignCenter)

        self.equaop.move(5*w/8, h / 4)
        self.equaop.resize(w / 24, h / 12)
        self.equaop.setText('=')
        self.equaop.setFont(QFont('Roman time2', 20, QFont.DemiBold))
        self.equaop.setAlignment(Qt.AlignCenter)

        self.ansin.move(3*w/4, h / 4)
        self.ansin.resize(w / 12, h / 12)
        self.ansin.setMaxLength(2)
        self.ansin.setFont(QFont('Roman times', 20, QFont.DemiBold))
        self.ansin.setAlignment(Qt.AlignCenter)

        self.tipans.move(3*w/4, h / 6)
        self.tipans.resize(w / 12, h / 12)
        self.tipans.setText('Answer:')
        self.tipans.setFont(QFont('Roman times', 12, QFont.DemiBold))
        self.tipans.setAlignment(Qt.AlignCenter)

        # 移动一根火柴按钮
        self.onebtn.move(w / 3, 3 * h / 8)
        self.onebtn.resize(w / 3, h / 16)
        self.onebtn.setText('搜索只移动一根火柴的结果')
        self.onebtn.setStatusTip('开始搜索只移动一根火柴的所有结果')
        self.onebtn.clicked.connect(lambda: self.startSearch(1))

        # 移动两根火柴按钮
        self.twobtn.move(w / 3, 7 * h / 16)
        self.twobtn.resize(w / 3, h / 16)
        self.twobtn.setText('搜索只移动两根火柴的结果')
        self.twobtn.setStatusTip('开始搜索只移动两根火柴的所有结果')
        self.twobtn.clicked.connect(lambda: self.startSearch(2))

        # LCD显示摆放
        self.lcd1.move(w/6, 7*h/12)
        self.lcd1.resize(w/12, h/8)
        self.lcd2.move(11*w/24, 7*h/12)
        self.lcd2.resize(w/12, h/8)
        self.lcd3.move(3*w/4, 7*h/12)
        self.lcd3.resize(w/12, h/8)
        self.lcdeq.move(5*w/8, 7*h/12)
        self.lcdeq.resize(w/24, h/8)
        self.lcdeq.setText('=')
        self.lcdeq.setStyleSheet("font:30pt;border-width: 2px;border-style: solid;border-color: rgb(0, 0, 0);"
                                 "background:silver;color: green;")
        self.lcdeq.setAlignment(Qt.AlignCenter)
        self.lcdop.move(w/3, 7*h/12)
        self.lcdop.resize(w/24, h/8)
        self.lcdop.setStyleSheet("font:30pt;border-width: 2px;border-style: solid;border-color: rgb(0, 0, 0);"
                                 "background:silver;color: green;")
        self.lcdop.setAlignment(Qt.AlignCenter)

        # 状态信息显示
        self.tips.move(w/6, 3*h/4)
        self.tips.resize(2*w/3, h/10)
        self.tips.setStyleSheet("background:white;font:12pt")

        # 上翻下翻
        self.last.move(w/4, 17*h/20)
        self.last.resize(w/8, h/18)
        self.last.setText('上一个')
        self.last.setStatusTip('查看上一个可行解')
        self.last.clicked.connect(lambda: self.changeShow(1))
        self.next.move(5*w/8, 17*h/20)
        self.next.resize(w/8, h/18)
        self.next.setText('下一个')
        self.next.setStatusTip('查看下一个可行解')
        self.next.clicked.connect(lambda: self.changeShow(2))

        # 退出动作
        exitAct = QAction(QIcon('../images/exit.png'), '&Exit', self)
        # mac系统下的快捷键
        exitAct.setShortcut('command+Q')
        exitAct.setStatusTip('退出')
        exitAct.setToolTip('快捷键:command+Q')
        exitAct.triggered.connect(lambda: self.sureClose())

        # 移动一根火柴动作
        start1Act = QAction(QIcon('../images/start1.png'), '&Start1', self)
        start1Act.setShortcut('command+W')
        start1Act.setToolTip('快捷键:command+W')
        start1Act.setStatusTip('开始搜索只移动一根火柴的所有结果')
        start1Act.triggered.connect(lambda: self.startSearch(1))

        # 移动两根火柴动作
        start2Act = QAction(QIcon('../images/start2.png'), '&Start2', self)
        start2Act.setShortcut('command+E')
        start2Act.setToolTip('快捷键:command+E')
        start2Act.setStatusTip('开始搜索只移动两根火柴的所有结果')
        start2Act.triggered.connect(lambda: self.startSearch(2))

        # 从库中选择等式动作
        openLib = QAction(QIcon('../images/lib.png'), '&Library', self)
        openLib.setShortcut('command+R')
        openLib.setToolTip('快捷键:command+R')
        openLib.setStatusTip('打开已有等式库')
        openLib.triggered.connect(lambda: self.openLibrary())

        # 打开帮助和信息界面
        openHelp = QAction(QIcon('../images/help.png'), '&Help', self)
        openHelp.setShortcut('command+A')
        openHelp.setToolTip('快捷键:command+A')
        openHelp.setStatusTip('打开帮助界面')
        openHelp.triggered.connect(lambda: self.openHelp())

        # 保存可解等式动作
        saveEquation = QAction(QIcon('../images/save.png'), '&Save', self)
        saveEquation.setShortcut('command+S')
        saveEquation.setToolTip('快捷键:command+S')
        saveEquation.setShortcut('保存可解的等式')
        saveEquation.setStatusTip('保存当前的可解等式')
        saveEquation.triggered.connect(lambda: self.saveEquation())

        # 清除输入和工作区动作
        clearAll = QAction(QIcon('../images/clear.png'), 'Clear', self)
        clearAll.setShortcut('command+C')
        clearAll.setToolTip('快捷键:command+C')
        clearAll.setShortcut('清除输入及变量')
        clearAll.setStatusTip('清除输入及变量')
        clearAll.triggered.connect(lambda: self.clearAction())

        self.toolbar.addAction(start1Act)
        self.toolbar.addAction(start2Act)
        self.toolbar.addAction(clearAll)
        self.toolbar.addAction(openLib)
        self.toolbar.addAction(saveEquation)
        self.toolbar.addAction(openHelp)
        self.toolbar.addAction(exitAct)

        # 信号和槽连接
        self.done1Signal.connect(self.getDone1)
        self.done2Signal.connect(self.getDone2)

    # 主功能函数,移动一根或两根全搜索
    def startSearch(self, num):
        self.varClear()
        self.lcdClear()
        common = '请确保{}方格内输入{}。'
        if self.facin1.text() == '':
            warn = QMessageBox.about(self, '错误提示', common.format('Number1', '数字'))
            self.status.showMessage('空输入错误')
        elif self.facin2.text() == '':
            warn = QMessageBox.about(self, '错误提示', common.format('Number2', '数字'))
            self.status.showMessage('空输入错误')
        elif self.ansin.text() == '':
            warn = QMessageBox.about(self, '错误提示', common.format('Answer', '数字'))
            self.status.showMessage('空输入错误')
        elif self.opin.text() == '':
            warn = QMessageBox.about(self, '错误提示', common.format('Operator', '"+", "-"或"*"号'))
            self.status.showMessage('空输入错误')
        else:
            try:
                fac1 = str(self.facin1.text())
                for x in range(0, len(fac1)):
                    int(fac1[x])
                fac2 = str(self.facin2.text())
                for x in range(0, len(fac2)):
                    int(fac2[x])
                ans = str(self.ansin.text())
                for x in range(0, len(ans)):
                    int(ans[x])
            except ValueError:
                warn = QMessageBox.about(self, '类型错误', common.format('Number1, Nubmber2和Answer', '仅为阿拉伯数字'))
                self.status.showMessage('输入类型错误')
            else:
                fac1 = str(self.facin1.text())
                fac2 = str(self.facin2.text())
                op = str(self.opin.text())
                ans = str(self.ansin.text())
                if not(op == '+' or op == '-' or op == '*'):
                    warn = QMessageBox.about(self, '类型错误', common.format('Operator', '"+", "-"或"*"号'))
                    self.status.showMessage('输入类型错误')
                else:
                    base = MatchEquation(fac1, fac2, ans, op)
                    if num == 1:
                        self.closed1 = onePerop(base)
                        self.done1Signal.emit('Done')
                    elif num == 2:
                        self.closed2 = twoPerop(base)
                        self.done2Signal.emit('Done')
                    self.status.showMessage('完成')

    # 打开等式库子窗口,接收选择等式
    def openLibrary(self):
        self.lib.show()
        self.lib.equationSignal.connect(self.getLibequation)

    # 打开帮助界面子窗口
    def openHelp(self):
        self.help.show()

    # 接收等式库子窗口的信号
    def getLibequation(self, connect):
        temp = ''
        for x in range(0, len(connect)):
            if connect[x] == '+' or connect[x] == '-' or connect[x] == '*':
                self.opin.setText(connect[x])
                self.facin1.setText(temp)
                temp = ''
            elif connect[x] == '=':
                self.facin2.setText(temp)
                temp = ''
            else:
                temp = temp + connect[x]
        self.ansin.setText(temp)

    # 接受对移动一根火柴问题求解完成的信号
    def getDone1(self, connect):
        ansNum = 0
        for equation in self.closed1:
            if equation.equal == True:
                ansNum = ansNum + 1
                self.showlist.append(equation)
        if ansNum == 0 or (ansNum == 1 and self.closed1[0] == self.showlist[0]):
            self.tips.setText('很抱歉,该等式通过移动一根火柴无解。')
        elif ansNum > 1 and self.closed1[0] == self.showlist[0]:
            self.allowed = 1
            self.initeq = 1
            self.now = self.now + 1
            info1 = '该问题是将等式变为新的等式问题, 有{}种新等式'
            info2 = '该问题的难度系数为{:.2f}'
            self.tips.setText(info1.format(ansNum - 1) + '<br>' + info2.format(len(self.closed1) / (ansNum - 1)))
            self.lcd1.display(self.showlist[self.now].factor1.tostr())
            self.lcd2.display(self.showlist[self.now].factor2.tostr())
            self.lcd3.display(self.showlist[self.now].answer.tostr())
            self.lcdop.setText(self.showlist[self.now].operator.tostr())
        else:
            self.allowed = 1
            info1 = '通过移动一根火柴使等式成立,有{}种可行的解法'
            info2 = '该问题的难度系数为{:.2f}'
            self.tips.setText(info1.format(ansNum)+'<br>'+info2.format(len(self.closed1) / ansNum))
            self.lcd1.display(self.showlist[self.now].factor1.tostr())
            self.lcd2.display(self.showlist[self.now].factor2.tostr())
            self.lcd3.display(self.showlist[self.now].answer.tostr())
            self.lcdop.setText(self.showlist[self.now].operator.tostr())

    # 接受对移动两根火柴问题求解完成的信号
    def getDone2(self, connect):
        ansNum = 0
        for equation in self.closed2:
            if equation.equal == True:
                ansNum = ansNum + 1
                self.showlist.append(equation)
        if ansNum == 0 or (ansNum == 1 and self.closed2[0] == self.showlist[0]):
            self.tips.setText('很抱歉,该等式通过移动两根火柴无解。')
        elif ansNum > 1 and self.closed2[0] == self.showlist[0]:
            self.allowed = 2
            self.initeq = 1
            self.now = self.now + 1
            info1 = '该问题是将等式变为新的等式问题, 有{}种新等式'
            info2 = '该问题的难度系数为{:.2f}'
            self.tips.setText(info1.format(ansNum - 1) + '<br>' + info2.format(len(self.closed2) / (ansNum - 1)))
            self.lcd1.display(self.showlist[self.now].factor1.tostr())
            self.lcd2.display(self.showlist[self.now].factor2.tostr())
            self.lcd3.display(self.showlist[self.now].answer.tostr())
            self.lcdop.setText(self.showlist[self.now].operator.tostr())
        else:
            self.allowed = 2
            info1 = '通过移动两根火柴使等式成立,有{}种可行的解法'
            info2 = '该问题的难度系数为{:.2f}'
            self.tips.setText(info1.format(ansNum) + '<br>' + info2.format(len(self.closed2)/ansNum))
            self.lcd1.display(self.showlist[self.now].factor1.tostr())
            self.lcd2.display(self.showlist[self.now].factor2.tostr())
            self.lcd3.display(self.showlist[self.now].answer.tostr())
            self.lcdop.setText(self.showlist[self.now].operator.tostr())

    # 接受上下翻信号
    def changeShow(self, flag):
        if flag == 1:
            if self.now == 0 or (self.initeq == 1 and self.now == 1):
                self.status.showMessage('已经是第一个结果')
            else:
                self.now = self.now - 1
        elif flag == 2:
            if self.now + 1 == len(self.showlist):
                self.status.showMessage('已经是最后一个结果')
            else:
                self.now = self.now + 1
        if len(self.showlist) > 0:
            self.lcd1.display(self.showlist[self.now].factor1.tostr())
            self.lcd2.display(self.showlist[self.now].factor2.tostr())
            self.lcd3.display(self.showlist[self.now].answer.tostr())
            self.lcdop.setText(self.showlist[self.now].operator.tostr())
        else:
            self.status.showMessage('您还未输入并求解问题')

    # 保存可行等式
    def saveEquation(self):
        if len(self.showlist) > 0:
            aim = ''
            eq = ''
            flag = 0
            if self.allowed == 1:
                aim = (self.closed1[0].factor1.tostr() + ';' +
                        self.closed1[0].factor2.tostr() + ';' +
                        self.closed1[0].answer.tostr() + ';' +
                        self.closed1[0].operator.tostr() + ';\n')
                eq = (self.closed1[0].factor1.tostr() +
                      self.closed1[0].operator.tostr() +
                      self.closed1[0].factor2.tostr() +
                      '=' +
                      self.closed1[0].answer.tostr())
            elif self.allowed == 2:
                aim = (self.closed2[0].factor1.tostr() + ';' +
                       self.closed2[0].factor2.tostr() + ';' +
                       self.closed2[0].answer.tostr() + ';' +
                       self.closed2[0].operator.tostr() + ';\n')
                eq = (self.closed2[0].factor1.tostr() +
                      self.closed2[0].operator.tostr() +
                      self.closed2[0].factor2.tostr() +
                      '=' +
                      self.closed2[0].answer.tostr())
            else:
                warn = QMessageBox.about(self, '无法保存', '抱歉,不可解等式无法保存!')
                flag = 1
            lib = open('../data/library.txt', 'r+')
            equations = lib.readlines()
            for equation in equations:
                if aim == equation:
                    warn = QMessageBox.about(self, '当前等式已存在', '感谢您的贡献!但您要添加的等式已在库中。')
                    flag = 1
                    break
            if flag == 0:
                lib.writelines(aim)
                # 刷新等式库
                self.lib.combobox.addItem(eq)
            lib.close()
        else:
            warn = QMessageBox.about(self, '无法保存', '抱歉,未被求解并证明可解的等式无法保存!')

    # 清空lcd显示
    def lcdClear(self):
        self.lcd1.display('')
        self.lcd2.display('')
        self.lcd3.display('')
        self.lcdop.setText('')
        self.tips.setText('')

    # 清空所有需保存的变量
    def varClear(self):
        self.closed1.clear()
        self.closed2.clear()
        self.showlist.clear()
        self.now = 0
        self.allowed = 0
        self.initeq = 0

    # 清除输入及变量
    def clearAction(self):
        self.facin1.clear()
        self.facin2.clear()
        self.opin.clear()
        self.ansin.clear()
        self.lcdClear()
        self.varClear()

    # 重写关闭函数
    def closeEvent(self, QCloseEvent):
        reply = QMessageBox.question(self, '退出程序',
                                     "确认要退出吗?",
                                     QMessageBox.Yes | QMessageBox.No,
                                     QMessageBox.No)
        if reply == QMessageBox.Yes:
            QCloseEvent.accept()
        else:
            QCloseEvent.ignore()


    # 关闭窗口确认
    def sureClose(self):
        reply = QMessageBox.question(self, '退出程序',
                                     "确认要退出吗?",
                                     QMessageBox.Yes | QMessageBox.No,
                                     QMessageBox.No)
        if reply == QMessageBox.Yes:
            qApp.quit()
Beispiel #17
0
class Game(QWidget):
    def __init__(self):
        super().__init__()
        self._flag_1 = False
        self.media = QtCore.QUrl.fromLocalFile("MP3/music.mp3")
        content = QtMultimedia.QMediaContent(self.media)
        self.player = QtMultimedia.QMediaPlayer()
        self.player.setMedia(content)
        self.player.setVolume(50)
        self.initUI()

    def initUI(self):
        self.file_number = 2
        self._score = 0
        self.setMouseTracking(True)
        self.resize(500, 500)
        self.center()
        self.setWindowTitle('Игра')

        self.main_pic = QLabel(self)
        self.main_pic.setPixmap(
            QPixmap(resource_path("PIC/running_rabbit.jpg")))
        self.main_pic.resize(500, 500)

        self.button_start_game = QPushButton("НАЧАТЬ ИГРУ", self)
        self.button_start_game.resize(140, 50)
        self.button_start_game.move(70, 300)
        self.button_start_game.clicked.connect(self.start_game)

        self.button_edit_map = QPushButton("СОЗДАТЬ КАРТУ", self)
        self.button_edit_map.resize(140, 50)
        self.button_edit_map.move(70, 360)
        self.button_edit_map.clicked.connect(self.edit_map_menu)

        self.button_exit = QPushButton("ЗАКОНЧИТЬ СЕАНС", self)
        self.button_exit.resize(140, 50)
        self.button_exit.move(70, 420)
        self.button_exit.clicked.connect(self.exit)

        self.timer_game = QTimer()
        self.timer_game.timeout.connect(self.updateValues)
        self.timer_game.start(200)
        self.setFocusPolicy(Qt.StrongFocus)

        self.lable_score = QLabel(self)
        self.lable_score.resize(200, 35)
        self.lable_score.setFont(
            QFont("RetroComputer[RUS by Daymarius]", 26, QFont.Bold))
        self.lable_score.setVisible(False)

        self.button_menu = QPushButton("НАЗАД", self)
        self.button_menu.resize(120, 40)
        self.button_menu.clicked.connect(self.show_menu)
        self.button_menu.setVisible(False)

        self.lable_name = QLabel("ВВЕДИТЕ ВАШЕ ИМЯ:", self)
        self.lable_name.sizeHint()
        self.lable_name.setFont(
            QFont("RetroComputer[RUS by Daymarius]", 10, QFont.Bold))
        self.lable_name.move(230, 300)

        self.input_name = QLineEdit("Без имени", self)
        self.input_name.resize(200, 20)
        self.input_name.move(230, 325)

        self.table_score = QTableWidget(self)
        self.table_score.resize(200, 120)
        self.table_score.move(230, 350)

    def bd_score(self):
        con = sqlite3.connect(resource_path("DB/score.db"))
        # Создание курсора
        cur = con.cursor()
        # Выполнение запроса и получение всех результатов
        result = cur.execute(
            "SELECT * FROM main ORDER BY score DESC;").fetchmany(5)
        cur.execute("DROP TABLE main")
        cur.execute("CREATE TABLE main (name STRING, score INTEGER)")
        for item in result:
            cur.execute("INSERT INTO main VALUES(?, ?)", (item[0], item[1]))
            con.commit()
        # Вывод результатов на экран
        if result != []:
            self.table_score.setColumnCount(len(result[0]))
            self.table_score.setRowCount(0)
            for i, row in enumerate(result):
                self.table_score.setRowCount(self.table_score.rowCount() + 1)
                for j, elem in enumerate(row):
                    item = QTableWidgetItem(str(elem))
                    self.table_score.setItem(i, j, item)
                    item.setFlags(QtCore.Qt.ItemIsEnabled)
            self.table_score.setHorizontalHeaderItem(
                0, QTableWidgetItem("Имя игрока"))
            self.table_score.setHorizontalHeaderItem(1,
                                                     QTableWidgetItem("Счет"))
            self.table_score.setColumnWidth(0, 127)
            self.table_score.setColumnWidth(1, 20)
        con.close()

    def append_bd_score_and_name(self):
        con = sqlite3.connect("DB/score.db")
        # Создание курсора
        cur = con.cursor()
        cur.execute("INSERT INTO main VALUES(?, ?)",
                    (self.input_name.text(), self.get_score()))
        con.commit()
        self.bd_score()
        con.close()

    def get_score(self):
        return self._score

    def set_score(self, score):
        self._score = score

    def keyPressEvent(self, event):
        if event.key() == Qt.Key_Right:
            self.hero.go_right()
        elif event.key() == Qt.Key_Left:
            self.hero.go_left()
        elif event.key() == Qt.Key_Up:
            self.hero.go_up()
        elif event.key() == Qt.Key_Down:
            self.hero.go_down()
        elif event.key() == Qt.Key_Space:
            self.hero.go_dig()

    def keyReleaseEvent(self, QKeyEvent):
        if self._flag_1 and not QKeyEvent.isAutoRepeat():
            self.hero.stop()

    def edit_map_menu(self):
        game.setVisible(False)
        edit_map.create_map()
        edit_map.show()

    def exit(self):
        sys.exit(app.exec())

    def center(self):
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

    def reload_game(self):
        score = self.get_score()
        lifes = self.hero.get_lifes()
        self.start_game()
        self.set_score(score)
        self.hero.set_lifes(lifes)

    def start_game(self):
        self.player.play()
        self.set_score(0)
        self.map = Map(resource_path("MAP/" + str(self.file_number) + ".map"))
        for enemy in self.enemies:
            enemy.create_labirint()
        self.button_menu.setVisible(True)
        self.button_menu.setFocusPolicy(False)
        self.lable_score.setVisible(True)
        self.lable_score.move(0, 0)
        self.button_menu.move(self.map.get_col() * 40 - 120, 0)
        self.lable_score.setText("00000")
        sp_0_1 = []
        for j in range(self.map.get_row()):
            for i in range(self.map.get_col()):
                if type(self.map.get_elem_xy(i, j)) == Empty and (
                        self.map.get_row() - 1 == j
                        or type(self.map.get_elem_xy(
                            i, j + 1)) in [Stairs, Brick]):
                    sp_0_1.append((i, j))

        zerro = Zerro()
        one = One()
        for i in range(int(round(len(sp_0_1) * 0.2))):
            t = randrange(0, len(sp_0_1))
            x, y = sp_0_1[t]
            self.map.set_elem_xy(x, y, choice([zerro, one]))
            del sp_0_1[t]
        self.hide_menu()

    def show_menu(self):
        self.append_bd_score_and_name()
        game.player.pause()
        self.hero.timer.stop()
        for enemy in self.enemies:
            enemy.timer.stop()
        self.timer_game.stop()
        self.main_pic.show()
        self.table_score.show()
        self.input_name.show()
        self.lable_name.show()
        self.button_menu.setVisible(False)
        self.lable_score.setVisible(False)
        self.button_edit_map.setVisible(True)
        self.button_exit.setVisible(True)
        self.button_start_game.setVisible(True)
        self.resize(500, 500)
        self.center()
        self._flag_1 = False

    def hide_menu(self):
        game.player.play()
        self.hero.timer.start(200)
        for enemy in self.enemies:
            enemy.timer.start(200)
        game.timer_game.start(200)
        self.main_pic.hide()
        self.table_score.hide()
        self.input_name.hide()
        self.lable_name.hide()
        self.button_menu.setVisible(True)
        self.lable_score.setVisible(True)
        self.button_edit_map.setVisible(False)
        self.button_exit.setVisible(False)
        self.button_start_game.setVisible(False)
        self.resize(self.map.get_col() * 40, self.map.get_row() * 40 + 40)
        self.center()
        self._flag_1 = True

    def paintEvent(self, event):
        qp = QPainter()
        qp.begin(self)
        if self._flag_1:
            for i in range(self.map.get_col()):
                for j in range(self.map.get_row()):
                    qp.drawPixmap(
                        i * 40, j * 40 + 40,
                        self.map.get_elem_xy(
                            i, j).get_pic())  # рисуем картинками из elem_map
            qp.drawPixmap(self.hero.get_x() * 40,
                          self.hero.get_y() * 40 + 40, self.hero.get_pic())
            for enemy in self.enemies:
                qp.drawPixmap(enemy.get_x() * 40,
                              enemy.get_y() * 40 + 40, enemy.get_pic())
            for i in range(game.hero.get_lifes()):
                qp.drawPixmap(280 + i * 40, 0,
                              self.hero._pic[self.hero._STOP][0])

            txt = "00000" + str(self._score)
            self.lable_score.setText(txt[len(txt) - 5:len(txt)])
        qp.end()

    def updateValues(self):
        self.update()

    def you_lose(self):
        self.player.pause()
        self.hero.timer.stop()
        for enemy in self.enemies:
            enemy.timer.stop()
        self.timer_game.stop()
        if self.hero.get_lifes() > 1:
            game.player.pause()
            buttonReply = QMessageBox.question(
                self, 'ВЫ ПРОИГРАЛИ', "Продолжить игру?",
                QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
            if buttonReply == QMessageBox.Yes:
                self.hero.set_lifes(self.hero.get_lifes() - 1)
                self.reload_game()
                self.timer_game.start(200)
            else:
                self.set_score(0)
                self.show_menu()
        else:
            game.player.pause()
            buttonReply = QMessageBox.information(self, 'ИГРА ОКОНЧЕНА',
                                                  "Вы проиграли.")
            self.append_bd_score_and_name()
            self.show_menu()
Beispiel #18
0
class Search(QWidget):
    search_sg = pyqtSignal(dict)
    back_sg = pyqtSignal()

    def __init__(self, parent=None):
        super(Search, self).__init__(parent)
        self.desktop = QApplication.desktop()
        self.screenRect = self.desktop.screenGeometry()
        self.h = self.screenRect.height()
        self.w = self.screenRect.width()
        self.xr = self.w / 930
        self.yr = self.h / 640
        self.zr = min(self.xr, self.yr)
        self.token = ''
        self.head = QLabel(self)
        self.search = QLineEdit(self)
        self.butt = QPushButton(self)
        self.but = QPushButton(self)
        self.set_ui()

    def set_ui(self):
        self.search.setObjectName('search')
        self.search.resize(self.xr * 520, self.yr * 40)
        self.search.move(self.xr * 205, self.yr * 300)
        self.search.setPlaceholderText('请输入战局ID')
        self.search.setTextMargins(20, 0, 0, 0)
        self.search.setStyleSheet('font-size:{}px;border-radius:{}px;'.format(int(self.zr * 16), self.zr * 15))
        self.head.setObjectName('head')
        self.head.resize(self.xr * 200, self.yr * 50)
        self.head.move(self.xr * 360, self.yr * 240)
        self.head.setText('搜索战局')
        self.head.setAlignment(Qt.AlignCenter)
        self.head.setStyleSheet('font-size:{}px;'.format(int(self.zr * 25)))
        self.but.setObjectName('button')
        self.but.resize(self.xr * 130, self.yr * 40)
        self.but.move(self.xr * 480, self.yr * 380)
        self.but.setText('返回')
        self.but.clicked.connect(self.back_for)
        self.butt.setObjectName('button')
        self.butt.resize(self.xr * 130, self.yr * 40)
        self.butt.move(self.xr * 320, self.yr * 380)
        self.butt.setText('搜索')
        self.butt.clicked.connect(self.search_for)
        self.setStyleSheet('#button{font-size:' + str(int(self.zr * 18)) + 'px;border-radius:' + str(
            self.zr * 15) + 'px;background-color:#333643;color:#ffffff;}#button:hover{background-color:#575B6E;}#button:pressed{background-color:#202129;}')

    def search_for(self):
        id_p = self.search.text()
        self.search.clear()
        dic = find_info(id_p, self.token)
        # print(dic)
        if dic['status'] == 0:
            self.search_sg.emit(dic)
        else:
            self.search.setStyleSheet(
                'font-size:{}px;border-radius:{}px;border:4px solid;border-color:red'.format(int(self.zr * 16),
                                                                                             self.zr * 15))
            self.search.clear()
            self.search.setPlaceholderText('ID不存在')

    def back_for(self):
        self.back_sg.emit()

    def get_token(self, t):
        self.token = t
Beispiel #19
0
class App(QWidget):
    def __init__(self):
        super().__init__()
        self.title = '扫描枪输入'
        self.left = 600
        self.top = 600
        self.width = 320
        self.height = 135
        self.initUI()
        self.pattern = re.compile(r'\d{8}')

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        # create textbox
        self.textbox = QLineEdit(self)
        self.textbox.move(20, 20)
        self.textbox.resize(280, 40)

        self.lb1 = QLabel(self)
        self.lb1.move(20, 80)

        self.show()

    @pyqtSlot()
    def on_click(self):
        input_value = self.textbox.text()
        # print(type(input_value))
        if self.pattern.match(input_value):

            textboxValue = input_value
            print(textboxValue)
            #发布到redis
            obj = RedisHelper()
            for i in range(1, 8):
                obj.publish({
                    "type": "add_sn",
                    "sn": textboxValue,
                    "complete": 1,
                    "station": 'ST' + str(i) + '0'
                })  #发布

            rd = obj.get_redis()
            while True:
                now_time = int(time.time())
                if rd.sadd("option_sets", now_time):
                    rd.hset(
                        "option_hashes", now_time,
                        '{"method": "write_complete", "params": "%s"}' %
                        "ST10")
                    rd.publish("START", now_time)
                    print('station_name complete')
                    break

            #结果存到label中
            self.lb1.setText(textboxValue)
            self.lb1.adjustSize()
            """打印完毕之后清空文本框"""
            self.textbox.setText('')
        else:
            self.textbox.setText('')
            print("序列号位数不对")

    def keyPressEvent(self, event):
        # 这里event.key()显示的是按键的编码
        # print("按下:" + str(event.key()))
        if str(event.key()) == '16777220':  # 回车16777220
            self.on_click()
            print('ok')
        else:
            print('安下:' + str(event.key()))
            print('value')
Beispiel #20
0
class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.title = 'Media Project'
        self.left = 100
        self.top = 100
        self.width = 960
        self.height = 800
        self.res = list(range(14))
        self.initUI()

    def initUI(self):
        self.pixmap = QPixmap("White.png")
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        openFile = QAction(QIcon('open.png'), 'Open', self)
        openFile.setShortcut('Ctrl+O')
        openFile.setStatusTip('Open new File')
        openFile.setFont(QFont("Roman times", 12))
        openFile.triggered.connect(self.msg)

        menubar = self.menuBar()
        menubar.setFont(QFont("Roman times", 12))
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(openFile)

        lb1 = QLabel("Origin Picture", self)
        lb1.move(200, 50)
        lb1.setFont(QFont("Roman times", 14))
        lb1.resize(150, 30)

        lb2 = QLabel("Heatmap", self)
        lb2.move(200, 390)
        lb2.setFont(QFont("Roman times", 14))
        lb2.resize(150, 30)

        self.l1 = QLabel(self)
        self.l1.resize(224, 224)
        self.l1.move(150, 90)

        CLASS_NAMES = [
            'Atelectasis', 'Cardiomegaly', 'Effusion', 'Infiltration', 'Mass',
            'Nodule', 'Pneumonia', 'Pneumothorax', 'Consolidation', 'Edema',
            'Emphysema', 'Fibrosis', 'Pleural_Thickening', 'Hernia'
        ]
        lbl1 = QLabel(CLASS_NAMES[0], self)
        lbl1.move(550, 50)
        lbl1.setFont(QFont("Roman times", 12))
        lbl1.resize(150, 30)
        self.t1 = QLineEdit(self)
        self.t1.move(700, 50)
        self.t1.setFont(QFont("Roman times", 12))
        self.t1.resize(120, 30)

        lbl2 = QLabel(CLASS_NAMES[1], self)
        lbl2.move(550, 100)
        lbl2.setFont(QFont("Roman times", 12))
        lbl2.resize(150, 30)
        self.t2 = QLineEdit(self)
        self.t2.move(700, 100)
        self.t2.setFont(QFont("Roman times", 12))
        self.t2.resize(120, 30)

        lbl3 = QLabel(CLASS_NAMES[2], self)
        lbl3.move(550, 150)
        lbl3.setFont(QFont("Roman times", 12))
        lbl3.resize(150, 30)
        self.t3 = QLineEdit(self)
        self.t3.move(700, 150)
        self.t3.setFont(QFont("Roman times", 12))
        self.t3.resize(120, 30)

        lbl4 = QLabel(CLASS_NAMES[3], self)
        lbl4.move(550, 200)
        lbl4.setFont(QFont("Roman times", 12))
        lbl4.resize(150, 30)
        self.t4 = QLineEdit(self)
        self.t4.move(700, 200)
        self.t4.setFont(QFont("Roman times", 12))
        self.t4.resize(120, 30)

        lbl5 = QLabel(CLASS_NAMES[4], self)
        lbl5.move(550, 250)
        lbl5.setFont(QFont("Roman times", 12))
        lbl5.resize(150, 30)
        self.t5 = QLineEdit(self)
        self.t5.move(700, 250)
        self.t5.setFont(QFont("Roman times", 12))
        self.t5.resize(120, 30)

        lbl6 = QLabel(CLASS_NAMES[5], self)
        lbl6.move(550, 300)
        lbl6.setFont(QFont("Roman times", 12))
        lbl6.resize(150, 30)
        self.t6 = QLineEdit(self)
        self.t6.move(700, 300)
        self.t6.setFont(QFont("Roman times", 12))
        self.t6.resize(120, 30)

        lbl7 = QLabel(CLASS_NAMES[6], self)
        lbl7.move(550, 350)
        lbl7.setFont(QFont("Roman times", 12))
        lbl7.resize(150, 30)
        self.t7 = QLineEdit(self)
        self.t7.move(700, 350)
        self.t7.setFont(QFont("Roman times", 12))
        self.t7.resize(120, 30)

        lbl8 = QLabel(CLASS_NAMES[7], self)
        lbl8.move(550, 400)
        lbl8.setFont(QFont("Roman times", 12))
        lbl8.resize(150, 30)
        self.t8 = QLineEdit(self)
        self.t8.move(700, 400)
        self.t8.setFont(QFont("Roman times", 12))
        self.t8.resize(120, 30)

        lbl9 = QLabel(CLASS_NAMES[8], self)
        lbl9.move(550, 450)
        lbl9.setFont(QFont("Roman times", 12))
        lbl9.resize(150, 30)
        self.t9 = QLineEdit(self)
        self.t9.move(700, 450)
        self.t9.setFont(QFont("Roman times", 12))
        self.t9.resize(120, 30)

        lbl10 = QLabel(CLASS_NAMES[9], self)
        lbl10.move(550, 500)
        lbl10.setFont(QFont("Roman times", 12))
        lbl10.resize(150, 30)
        self.t10 = QLineEdit(self)
        self.t10.move(700, 500)
        self.t10.setFont(QFont("Roman times", 12))
        self.t10.resize(120, 30)

        lbl11 = QLabel(CLASS_NAMES[10], self)
        lbl11.move(550, 550)
        lbl11.setFont(QFont("Roman times", 12))
        lbl11.resize(150, 30)
        self.t11 = QLineEdit(self)
        self.t11.move(700, 550)
        self.t11.setFont(QFont("Roman times", 12))
        self.t11.resize(120, 30)

        lbl12 = QLabel(CLASS_NAMES[11], self)
        lbl12.move(550, 600)
        lbl12.setFont(QFont("Roman times", 12))
        lbl12.resize(150, 30)
        self.t12 = QLineEdit(self)
        self.t12.move(700, 600)
        self.t12.setFont(QFont("Roman times", 12))
        self.t12.resize(120, 30)

        lbl13 = QLabel(CLASS_NAMES[12], self)
        lbl13.move(550, 650)
        lbl13.setFont(QFont("Roman times", 12))
        lbl13.resize(150, 30)
        self.t13 = QLineEdit(self)
        self.t13.move(700, 650)
        self.t13.setFont(QFont("Roman times", 12))
        self.t13.resize(120, 30)

        lbl14 = QLabel(CLASS_NAMES[13], self)
        lbl14.move(550, 700)
        lbl14.setFont(QFont("Roman times", 12))
        lbl14.resize(150, 30)
        self.t14 = QLineEdit(self)
        self.t14.move(700, 700)
        self.t14.setFont(QFont("Roman times", 12))
        self.t14.resize(120, 30)

        self.l2 = QLabel(self)
        self.l2.resize(224, 224)
        self.l2.move(150, 430)

        self.clear()

        button1 = QPushButton('Diagnosis', self)
        button1.move(120, 340)
        button1.setFont(QFont("Roman times", 12))
        button1.clicked.connect(self.diag)

        button2 = QPushButton('clear', self)
        button2.move(280, 340)
        button2.setFont(QFont("Roman times", 12))
        button2.clicked.connect(self.clear)

        self.show()

    def diag(self):
        try:
            res = gen_heatmap(self.file1, heatmap)
            pixmap2 = QPixmap(heatmap)
            self.l2.setPixmap(pixmap2)

            self.t1.setText(str(res[0]))
            self.t2.setText(str(res[1]))
            self.t3.setText(str(res[2]))
            self.t4.setText(str(res[3]))
            self.t5.setText(str(res[4]))
            self.t6.setText(str(res[5]))
            self.t7.setText(str(res[6]))
            self.t8.setText(str(res[7]))
            self.t9.setText(str(res[8]))
            self.t10.setText(str(res[9]))
            self.t11.setText(str(res[10]))
            self.t12.setText(str(res[11]))
            self.t13.setText(str(res[12]))
            self.t14.setText(str(res[13]))
        except:
            print("Please choose a picture as input")

    def msg(self):
        fileName1, filetype = QFileDialog.getOpenFileName(
            self, "选取文件", "./", "All Files (*);;Picture Files (*.jpg)")
        self.file1 = fileName1
        img = cv2.imread(fileName1)
        img = cv2.resize(img, (224, 224))
        cv2.imwrite(fileName1, img)
        pixmap1 = QPixmap(fileName1)
        self.l1.setPixmap(pixmap1)

    def clear(self):
        self.t1.setText("")
        self.t2.setText("")
        self.t3.setText("")
        self.t4.setText("")
        self.t5.setText("")
        self.t6.setText("")
        self.t7.setText("")
        self.t8.setText("")
        self.t9.setText("")
        self.t10.setText("")
        self.t11.setText("")
        self.t12.setText("")
        self.t13.setText("")
        self.t14.setText("")
        self.l1.setPixmap(self.pixmap)
        self.l2.setPixmap(self.pixmap)
        self.file1 = ""
Beispiel #21
0
class App(QWidget):
    def __init__(self):
        super().__init__()
        self.searchEngine = VectorSpaceIndex
        self.ifCorrect = False
        self.initUI()

    def initUI(self):
        self.setWindowTitle('Searching Engine')
        self.resize(700, 500)
        self.center()
        # 创建选项

        self.rb1 = QRadioButton('布尔检索')
        self.rb2 = QRadioButton('向量空间检索')
        self.rb3 = QRadioButton('BM25')
        self.rb4 = QRadioButton("短语查询(不支持矫正)")
        self.rb6 = QRadioButton("布尔通配符查询(不支持矫正)")
        self.bg1 = QButtonGroup()
        self.bg1.addButton(self.rb1, 1)
        self.bg1.addButton(self.rb2, 2)
        self.bg1.addButton(self.rb3, 3)
        self.bg1.addButton(self.rb4, 4)
        self.bg1.addButton(self.rb6, 5)
        self.bg1.buttonClicked.connect(self.rbclicked)

        self.rb5 = QCheckBox('需要词语矫正')
        self.rb5.stateChanged.connect(self.changestate)

        self.buttonbox = QHBoxLayout()
        self.buttonbox.addWidget(self.rb1)
        self.buttonbox.addWidget(self.rb2)
        self.buttonbox.addWidget(self.rb3)
        self.buttonbox.addWidget(self.rb4)
        self.buttonbox.addWidget(self.rb6)
        self.buttonbox.addWidget(self.rb5)
        # 创建文本框

        self.textbox = QLineEdit()
        self.textbox.resize(280, 40)
        self.button = QPushButton('Search Now !')
        self.button.clicked.connect(self.on_click)

        # 创建hbox
        self.hbox = QHBoxLayout()
        self.hbox.addWidget(self.textbox)
        self.hbox.addWidget(self.button)
        # 创建列表
        self.listWidget = QListWidget()
        self.listWidget.resize(600, 300)
        self.listWidget.setWindowTitle('Search Result')
        # 单击触发绑定的槽函数
        self.listWidget.itemDoubleClicked.connect(self.clicked)

        # 创建vbox
        self.vbox = QVBoxLayout()
        self.vbox.addLayout(self.buttonbox)
        self.vbox.addLayout(self.hbox)
        self.vbox.addWidget(self.listWidget)
        self.setLayout(self.vbox)
        self.show()

    # 获取该条新闻消息
    def btnClicked(self, title, text):
        self.chile_Win = ChildWindow()
        self.chile_Win.textbox.setText(title + "\n\n" + text)
        self.chile_Win.show()
        self.chile_Win.exec_()

    # 让搜索框居中
    def center(self):
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

    # 搜索按钮的单击事件
    @pyqtSlot()
    def on_click(self):
        self.listWidget.clear()
        textboxValue = self.textbox.text()
        ps = PorterStemmer()

        if self.searchEngine is bm25 or self.searchEngine is VectorSpaceIndex:
            textboxValue = textboxValue.lower().split()
            if self.ifCorrect:
                for i in range(len(textboxValue)):
                    textboxValue[i] = ps.stem(
                        MisspellCorrect.correction(textboxValue[i]))
            else:
                for i in range(len(textboxValue)):
                    textboxValue[i] = ps.stem(textboxValue[i])

        if self.searchEngine is BooleanIndex:
            textboxValue = textboxValue.split()
            temp = [
                str.lower() for str in textboxValue
                if str != "AND" and str != "OR" and str != "NOT"
            ]
            if self.ifCorrect:
                for i in range(len(temp)):
                    temp[i] = ps.stem(MisspellCorrect.correction(temp[i]))
            else:
                for i in range(len(temp)):
                    temp[i] = ps.stem(temp[i])
            k = 0
            for i in range(len(temp)):
                textboxValue[k] = temp[i]
                k += 2
            textboxValue = ' '.join(textboxValue)

        result = self.searchEngine.search(textboxValue)
        for i in range(len(result)):
            with open(r"IRProjectdata/data" + str(result[i]) + ".json",
                      "r",
                      encoding="utf-8") as f:
                t = json.load(f)["title"]
                self.listWidget.addItem(t + " id=" + str(result[i]))

    # 搜索结果的双击事件
    def clicked(self, item):
        rge = r" id=(\d+)"
        rtvl = re.search(rge, item.text()).group(1)
        with open(r"IRProjectdata/data" + str(rtvl) + ".json",
                  "r",
                  encoding="utf-8") as f:
            temp = json.load(f)
            title = temp["title"]
            text = temp["text"]
            self.btnClicked(title, text)

    # 进行搜索引擎的切换,同时清空内存
    def rbclicked(self):
        if self.bg1.checkedId() == 1:
            self.searchEngine = BooleanIndex
            VectorSpaceIndex.releaseSpace()
            PositionIndex.releasespace()
            bm25.releasespace()
            WildCardIndex.releasespace()
        elif self.bg1.checkedId() == 2:
            self.searchEngine = VectorSpaceIndex
            BooleanIndex.releaseSpace()
            PositionIndex.releasespace()
            bm25.releasespace()
            WildCardIndex.releasespace()
        elif self.bg1.checkedId() == 3:
            self.searchEngine = bm25
            VectorSpaceIndex.releaseSpace()
            BooleanIndex.releaseSpace()
            PositionIndex.releasespace()
            WildCardIndex.releasespace()
        elif self.bg1.checkedId() == 4:
            self.searchEngine = PositionIndex
            VectorSpaceIndex.releaseSpace()
            BooleanIndex.releaseSpace()
            bm25.releasespace()
            WildCardIndex.releasespace()
        elif self.bg1.checkedId() == 5:
            self.searchEngine = WildCardIndex
            PositionIndex.releasespace()
            VectorSpaceIndex.releaseSpace()
            BooleanIndex.releaseSpace()
            bm25.releasespace()

    def changestate(self):
        if self.rb5.isChecked():
            self.ifCorrect = True
        else:
            self.ifCorrect = False
class StickmanToolsPanel(QFrame):
    
    WIDTH = 1100
    HEIGHT = 45
    
    FRAME_SIZE_X = 180
    FRAME_WIDTH = 1
    FRAME_MARGIN = 2
    
    ICON_SIZE = 35
    ICON_BUTTON_WIDTH = 60
    INPUT_TEXT_WIDTH = 300
    INPUT_START_X = 213
    SAY_BLOCK_X = 520
    PHOTO_BUTTON_WIDTH = 240
    PHOTO_BUTTON_X = 858
    
    def __init__(self, parent, tools):
        super().__init__(parent)
        self.tools = tools
        self.initUI()
        
    def initUI(self):
        self.resize(StickmanToolsPanel.WIDTH, StickmanToolsPanel.HEIGHT + StickmanToolsPanel.FRAME_MARGIN*2)
        self.setFrameStyle(QFrame.StyledPanel)
        self.setFrameRect(QRect(0, 0, StickmanToolsPanel.FRAME_SIZE_X + StickmanToolsPanel.FRAME_MARGIN*2, StickmanToolsPanel.HEIGHT + StickmanToolsPanel.FRAME_MARGIN*2))
        self.setLineWidth(StickmanToolsPanel.FRAME_WIDTH)
        
        component_stylesheet = """
                                .QPushButton {
                                    font-weight: bold;
                                    font-size: 13px;
                                    background-color:#E0E0E0;
                                }
                                .QPushButton:pressed {
                                    background-color:#CCCCCC;
                                }
                                .QLineEdit {
                                    font-weight: bold;
                                    font-size: 24px;
                                }  
                            """
                        
        self.smile_button = QPushButton('', self)
        self.smile_button.setIcon(assets.smile)
        self.smile_button.setIconSize(QSize(StickmanToolsPanel.ICON_SIZE, StickmanToolsPanel.ICON_SIZE))
        self.smile_button.resize(StickmanToolsPanel.ICON_BUTTON_WIDTH, StickmanToolsPanel.HEIGHT)
        self.smile_button.move(StickmanToolsPanel.FRAME_MARGIN, StickmanToolsPanel.FRAME_MARGIN)        
        self.smile_button.setStyleSheet(component_stylesheet)
        self.smile_button.clicked.connect(self.changeExpression)
        self.smile_button.show()        

        self.sad_button = QPushButton('', self)
        self.sad_button.setIcon(assets.sad)
        self.sad_button.setIconSize(QSize(StickmanToolsPanel.ICON_SIZE, StickmanToolsPanel.ICON_SIZE))
        self.sad_button.resize(StickmanToolsPanel.ICON_BUTTON_WIDTH, StickmanToolsPanel.HEIGHT)
        self.sad_button.move(StickmanToolsPanel.FRAME_MARGIN + StickmanToolsPanel.ICON_BUTTON_WIDTH, StickmanToolsPanel.FRAME_MARGIN)        
        self.sad_button.setStyleSheet(component_stylesheet)
        self.sad_button.clicked.connect(self.changeExpression)
        self.sad_button.show() 
        
        self.confused_button = QPushButton('', self)
        self.confused_button.setIcon(assets.confused)
        self.confused_button.setIconSize(QSize(StickmanToolsPanel.ICON_SIZE, StickmanToolsPanel.ICON_SIZE))
        self.confused_button.resize(StickmanToolsPanel.ICON_BUTTON_WIDTH, StickmanToolsPanel.HEIGHT)
        self.confused_button.move(StickmanToolsPanel.FRAME_MARGIN + StickmanToolsPanel.ICON_BUTTON_WIDTH*2, StickmanToolsPanel.FRAME_MARGIN)        
        self.confused_button.setStyleSheet(component_stylesheet)
        self.confused_button.clicked.connect(self.changeExpression)
        self.confused_button.show() 
        
        self.say_text = QLineEdit(self)
        self.say_text.setStyleSheet(component_stylesheet)
        self.say_text.resize(StickmanToolsPanel.INPUT_TEXT_WIDTH, StickmanToolsPanel.HEIGHT)
        self.say_text.move(StickmanToolsPanel.FRAME_MARGIN + StickmanToolsPanel.INPUT_START_X, StickmanToolsPanel.FRAME_MARGIN)
        
        self.say_left = QPushButton('', self)
        self.say_left.setIcon(assets.say_left)
        self.say_left.setIconSize(QSize(StickmanToolsPanel.ICON_SIZE, StickmanToolsPanel.ICON_SIZE))
        self.say_left.resize(StickmanToolsPanel.ICON_BUTTON_WIDTH, StickmanToolsPanel.HEIGHT)
        self.say_left.move(StickmanToolsPanel.SAY_BLOCK_X, StickmanToolsPanel.FRAME_MARGIN)        
        self.say_left.setStyleSheet(component_stylesheet)
        self.say_left.clicked.connect(self.sayLeft)
        
        self.say_right = QPushButton('', self)
        self.say_right.setIcon(assets.say_right)
        self.say_right.setIconSize(QSize(StickmanToolsPanel.ICON_SIZE, StickmanToolsPanel.ICON_SIZE))
        self.say_right.resize(StickmanToolsPanel.ICON_BUTTON_WIDTH, StickmanToolsPanel.HEIGHT)
        self.say_right.move(StickmanToolsPanel.SAY_BLOCK_X + StickmanToolsPanel.ICON_BUTTON_WIDTH, StickmanToolsPanel.FRAME_MARGIN)   
        self.say_right.setStyleSheet(component_stylesheet)
        self.say_right.clicked.connect(self.sayRight)
        
        self.say_exit = QPushButton('', self)
        self.say_exit.setIcon(assets.exit)
        self.say_exit.setIconSize(QSize(StickmanToolsPanel.ICON_SIZE, StickmanToolsPanel.ICON_SIZE))
        self.say_exit.resize(StickmanToolsPanel.ICON_BUTTON_WIDTH, StickmanToolsPanel.HEIGHT)
        self.say_exit.move(StickmanToolsPanel.SAY_BLOCK_X + StickmanToolsPanel.ICON_BUTTON_WIDTH*2, StickmanToolsPanel.FRAME_MARGIN)   
        self.say_exit.setStyleSheet(component_stylesheet)
        self.say_exit.clicked.connect(self.sayClear)
        
        self.photo = QPushButton('', self)
        self.photo.setIcon(assets.camera)
        self.photo.setIconSize(QSize(StickmanToolsPanel.ICON_SIZE, StickmanToolsPanel.ICON_SIZE))
        self.photo.resize(StickmanToolsPanel.PHOTO_BUTTON_WIDTH, StickmanToolsPanel.HEIGHT)
        self.photo.move(StickmanToolsPanel.PHOTO_BUTTON_X, StickmanToolsPanel.FRAME_MARGIN)
        self.photo.setStyleSheet(component_stylesheet)
        self.photo.clicked.connect(self.makePhoto)
        
    def sayLeft(self):
        search = getWorld().getActive()
        if search != None:
            search.sayLeft(self.say_text.text())
        self.say_text.setText("")
    def sayRight(self):
        search = getWorld().getActive()
        if search != None:
            search.sayRight(self.say_text.text())
        self.say_text.setText("")
    def sayClear(self):
        search = getWorld().getActive()
        if search != None:
            search.sayRemove()
        self.say_text.setText("")
    
    def changeExpression(self):
        search = getWorld().getActive()
        if search != None:
            if self.sender() == self.smile_button:
                search.setHappy()
            elif self.sender() == self.sad_button:
                search.setSad()
            else:
                search.setConfused()
    
    def makePhoto(self):
        self.tools.framemenu.addNewFrame(getWorld().getFrame())
Beispiel #23
0
class Register(QWidget):
    register_ok_sg = pyqtSignal()

    def __init__(self, parent=None):
        super(Register, self).__init__(parent)
        self.desktop = QApplication.desktop()
        self.screenRect = self.desktop.screenGeometry()
        self.h = self.screenRect.height()
        self.w = self.screenRect.width()
        self.xr = self.w / 930
        self.yr = self.h / 640
        self.zr = min(self.xr, self.yr)
        self.top_wi = QWidget(self)
        self.logo_la = QLabel(self.top_wi)
        self.ind_wi = QWidget(self)
        self.register_but = QPushButton(self.ind_wi)
        self.imp_la = QLabel(self.ind_wi)
        self.account_le = QLineEdit(self.ind_wi)
        self.psw_le = QLineEdit(self.ind_wi)
        self.name_le = QLineEdit(self.ind_wi)
        self.set_ui()
        with open('index.qss', 'r') as f:
            self.setStyleSheet(f.read())

    def set_ui(self):
        self.setWindowTitle('Register')
        self.setObjectName('register')
        self.resize(self.w, self.h)
        self.top_wi.setObjectName('top')
        self.top_wi.resize(930 * self.xr, 95 * self.yr)
        self.logo_la.setObjectName('logo')
        self.logo_la.resize(65 * self.xr, 65 * self.zr)
        self.logo_la.move(29 * self.xr, 16 * self.yr)
        effect = QGraphicsDropShadowEffect()
        effect.setOffset(10, 10)
        effect.setColor(QColor(0, 0, 0, 80))
        effect.setBlurRadius(20)
        self.ind_wi.setObjectName('login')
        self.ind_wi.resize(327 * self.xr, 388 * self.yr)
        self.ind_wi.move(300 * self.xr, 150 * self.yr)
        self.ind_wi.setGraphicsEffect(effect)
        self.register_but.setObjectName('button')
        self.register_but.move(64 * self.xr, 315 * self.yr)
        self.register_but.resize(202 * self.xr, 45 * self.yr)
        self.register_but.setText('注册新用户')
        self.register_but.clicked.connect(self.register)
        self.imp_la.setObjectName('imp_label')
        self.imp_la.resize(100 * self.zr, 100 * self.zr)
        self.imp_la.move(115 * self.xr + 100 * (self.xr - self.zr) / 2,
                         15 * self.yr)
        self.imp_la.setStyleSheet('border-radius:{}px;'.format(self.zr * 49))
        self.account_le.setObjectName('input')
        self.account_le.setTextMargins(20, 0, 0, 0)
        self.account_le.resize(213 * self.xr, 45 * self.yr)
        self.account_le.move(59 * self.xr, 126 * self.yr)
        self.account_le.setPlaceholderText('账号')
        self.psw_le.setObjectName('input')
        self.psw_le.setTextMargins(20, 0, 0, 0)
        self.psw_le.resize(213 * self.xr, 45 * self.yr)
        self.psw_le.move(59 * self.xr, 181 * self.yr)
        self.psw_le.setPlaceholderText('密码')
        self.psw_le.setEchoMode(QLineEdit.Password)
        self.name_le.setObjectName('input')
        self.name_le.setTextMargins(20, 0, 0, 0)
        self.name_le.resize(213 * self.xr, 45 * self.yr)
        self.name_le.move(59 * self.xr, 236 * self.yr)
        self.name_le.setPlaceholderText('昵称')
        self.ind_wi.setStyleSheet('#input{border-radius:' + str(self.zr * 20) +
                                  'px;}' + '#button{border-radius:' +
                                  str(self.zr * 20) + 'px;' + 'font-size:' +
                                  str(int(self.zr * 18)) + 'px;}')

    def register(self):
        account_p = self.account_le.text()
        psw_p = self.psw_le.text()
        # name_p = self.name_le.text()
        dic = register(account_p, psw_p)
        if dic['status'] == 1001:
            self.account_le.clear()
            self.psw_le.clear()
            self.account_le.setStyleSheet('border:4px solid;border-color:red;')
            self.account_le.setPlaceholderText('账号已存在')
        elif dic['status'] == 0:
            self.register_ok_sg.emit()
        else:
            self.account_le.clear()
            self.psw_le.clear()
            self.account_le.setStyleSheet('border:4px solid;border-color:red;')
            self.account_le.setPlaceholderText('未知错误')
Beispiel #24
0
class App(QWidget):
    def __init__(self):
        super().__init__()
        self.title = 'SearchExcel '

        self.pathTextBox = QLineEdit(self)
        self.setWindowTitle(self.title)

        self.pathTextBox.move(20, 20)

        # create searchTextBox
        self.searchTextBox = QLineEdit(self)
        self.searchTextBox.move(20, 80)
        self.searchTextBox.textChanged.connect(self.onTextChange)

        # Create a openPathButton in the window
        self.openPathButton = QPushButton('打开文件夹', self)

        self.tableWidget = QTableWidget(self)

        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(5)
        self.tableWidget.setRowCount(0)

        for i in range(3):
            item = QTableWidgetItem()
            self.tableWidget.setVerticalHeaderItem(i, item)

        for i in range(5):
            item = QTableWidgetItem()
            item.setTextAlignment(Qt.AlignCenter)
            self.tableWidget.setHorizontalHeaderItem(i, item)
        self.tableWidget.horizontalHeader().setCascadingSectionResizes(True)

        item = self.tableWidget.horizontalHeaderItem(0)
        item.setText(_translate("widget", "文件名"))
        item = self.tableWidget.horizontalHeaderItem(1)
        item.setText(_translate("widget", "Sheet"))
        item = self.tableWidget.horizontalHeaderItem(2)
        item.setText(_translate("widget", "行"))
        item = self.tableWidget.horizontalHeaderItem(3)
        item.setText(_translate("widget", "列"))
        item = self.tableWidget.horizontalHeaderItem(4)
        item.setText(_translate("widget", "内容"))
        self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)

        # connect openPathButton to function on_click
        self.openPathButton.clicked.connect(self.on_click)
        self.showMaximized()

    @pyqtSlot()
    def on_click(self):
        self.pathTextBox.setText(
            QFileDialog.getExistingDirectory(None, "请选择文件夹路径"))

    def resizeEvent(self, a0):
        self.pathTextBox.resize(self.width() * 0.8, 40)
        self.openPathButton.move(self.width() * 0.85, 20)
        self.openPathButton.resize(self.width() * 0.1, 40)
        self.searchTextBox.resize(self.width() - 40, 40)
        self.tableWidget.setGeometry(20, 180,
                                     self.width() - 40,
                                     self.height() - 200)
        self.tableWidget.horizontalHeader().resizeSection(
            0, int(self.tableWidget.width() * 0.3))
        self.tableWidget.horizontalHeader().resizeSection(
            1, int(self.tableWidget.width() * 0.2))
        self.tableWidget.horizontalHeader().resizeSection(
            2, int(self.tableWidget.width() * 0.05))
        self.tableWidget.horizontalHeader().resizeSection(
            3, int(self.tableWidget.width() * 0.05))
        self.tableWidget.horizontalHeader().resizeSection(
            4, int(self.tableWidget.width() * 0.4))

    def onTextChange(self):
        result_list = []
        searchText = self.searchTextBox.text()
        if len(searchText) == 0:
            self.tableWidget.setRowCount(0)
            return
        excel_dir_path = self.pathTextBox.text()
        file_list = os.listdir(excel_dir_path)
        if file_list is None:
            self.tableWidget.setRowCount(0)
            return
        for file_name in file_list:
            if file_name.endswith("xlsx") or file_name.endswith("xls"):
                excel_file_path = os.path.join(excel_dir_path, file_name)
                try:
                    excel = xlrd.open_workbook(excel_file_path,
                                               encoding_override="utf-8")
                except IOError:
                    print("open %s failed" % excel_file_path)
                else:
                    all_sheet = excel.sheet_names()
                    for sheet_name in all_sheet:
                        each_sheet_by_name = excel.sheet_by_name(sheet_name)
                        for i in range(each_sheet_by_name.nrows):
                            for j in range(each_sheet_by_name.ncols):
                                if searchText in str(
                                        each_sheet_by_name.row_values(i)[j]):
                                    result_list.append(
                                        (file_name, sheet_name, i + 1, j + 1,
                                         each_sheet_by_name.row_values(i)[j]))

        self.tableWidget.setRowCount(len(result_list))

        for i in range(len(result_list)):
            for j in range(5):
                item = QTableWidgetItem()
                self.tableWidget.setItem(i, j, item)
                item.setText(_translate("widget", str(result_list[i][j])))
class InputLine(QWidget):
    
    HEIGHT = 30
    LABEL_WIDTH = 170
    INPUT_TEXT_WIDTH = 200
    BUTTON_WIDTH = 100
    BUTTON_BLOCK_X = 380
    ELEMENT_GAP = 5
    
    ERROR_WIDTH = 250
    ERROR_X = 595
    
    def __init__(self, parent):
        super().__init__(parent)
        self.initUI()
        
    def initUI(self):
                
        component_stylesheet = """
                                .QPushButton {
                                    font-weight: bold;
                                    font-size: 13px;
                                    background-color:#E0E0E0;
                                }
                                .QPushButton:pressed {
                                    background-color:#CCCCCC;
                                }
                                .QLabel {
                                    padding-top: 7px;
                                    font-weight: bold;
                                    font-size: 14px;
                                }
                                .QLineEdit {
                                    font-weight: bold;
                                    font-size: 14px;
                                }
                                .QLabel#error {
                                    color: red;
                                    font-size: 12px;
                                    font-style: italic;
                                    padding-top: 0px;
                                    padding-left: 6px;
                                }   
                            """       
               
        self.label = QLabel("", self)
        self.label.setStyleSheet(component_stylesheet)
        self.label.setAlignment(Qt.AlignRight)
        self.label.resize(InputLine.LABEL_WIDTH, InputLine.HEIGHT)
        self.label.move(0, 0)        
        
        self.text = QLineEdit(self)
        self.text.setStyleSheet(component_stylesheet)
        self.text.resize(InputLine.INPUT_TEXT_WIDTH, InputLine.HEIGHT)
        self.text.move(InputLine.LABEL_WIDTH + InputLine.ELEMENT_GAP, 0)
        
        self.ok = QPushButton("OK", self)
        self.ok.setStyleSheet(component_stylesheet)
        self.ok.resize(InputLine.BUTTON_WIDTH, InputLine.HEIGHT)
        self.ok.move(InputLine.BUTTON_BLOCK_X, 0)
        
        self.cancel = QPushButton("Cancel", self)
        self.cancel.setStyleSheet(component_stylesheet)
        self.cancel.resize(InputLine.BUTTON_WIDTH, InputLine.HEIGHT)
        self.cancel.move(InputLine.BUTTON_BLOCK_X + InputLine.BUTTON_WIDTH + InputLine.ELEMENT_GAP, 0)
    
        self.error = QLabel("", self)
        self.error.setObjectName("error")
        self.error.setStyleSheet(component_stylesheet)
        self.error.resize(InputLine.ERROR_WIDTH, InputLine.HEIGHT)
        self.error.move(InputLine.ERROR_X, 0)
    
    """ listeners which control what happens on ok an cancel button presses """
    def addOkListener(self, onOkEvent):
        self.ok.clicked.connect(onOkEvent)
    def addCancelListener(self, onCancelEvent):
        self.cancel.clicked.connect(onCancelEvent)
        
    """ utility methods of the widget """
    def getText(self):
        return self.text.text()
    def setText(self, text):
        self.text.setText(text)        
        
    def setLabelText(self, text):
        self.label.setText(text)
        
    def setErrorText(self, text):
        self.error.setText(text)
Beispiel #26
0
class EditMap(QWidget):  # класс для создания карты
    def __init__(self):
        self._sp_map = []
        self._elem_map = []
        self._activ_pic = 0
        self._mouse_x = 0
        self._mouse_y = 0
        self._flag_1 = False
        self._flag_2 = True
        self._col = 14
        self._row = 14
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowFlags(Qt.Window | Qt.WindowTitleHint
                            | Qt.CustomizeWindowHint)  #
        self.setMouseTracking(True)  # отслеживаем положение мыши
        self.resize(200,
                    100)  # задаем размер окна с параметрами размеров карты
        self.center()  # отцентровываем окно относительно экрана

        self.setWindowTitle('Редактор карты')

        self.input_col = QLineEdit(str(self._col),
                                   self)  # создаем строку для ввода x
        self.input_col.resize(50, 25)  # задаем размер строки для ввода x
        self.input_col.move(
            30, 0
        )  # задаем положение строки для ввода x в окне с параметрами размеров карты

        self.input_row = QLineEdit(str(self._row),
                                   self)  # создаем строку для ввода y
        self.input_row.resize(50, 25)  # задаем размер строки для ввода y
        self.input_row.move(
            120, 0
        )  # задаем положение строки для ввода y в окне с параметрами размеров карты

        self.button_new_map = QPushButton(
            "СОЗДАТЬ КАРТУ", self)  # создаем кнопку "СОЗДАТЬ КАРТУ"
        self.button_new_map.resize(140,
                                   50)  # задаем размер кнопки "СОЗДАТЬ КАРТУ"
        self.button_new_map.move(
            30, 50
        )  # задаем положение кнопки "СОЗДАТЬ КАРТУ" в окне с параметрами размеров карты
        self.button_new_map.clicked.connect(
            self.new_map)  # ждем событие от кнопки "СОЗДАТЬ КАРТУ"

        self.button_create = QPushButton("СОЗДАТЬ",
                                         self)  # создаем кнопку "СОЗДАТЬ"
        self.button_create.resize(70, 30)  # задаем размер кнопки "СОЗДАТЬ"
        self.button_create.setVisible(False)  # прячем кнопку "СОЗДАТЬ"
        self.button_create.clicked.connect(
            self.create_map)  # ждем событие от кнопки "СОЗДАТЬ"

        self.button_open = QPushButton("ОТКРЫТЬ",
                                       self)  # создаем  кнопку "ОТКРЫТЬ"
        self.button_open.resize(70, 30)  # задаем размер кнопки "ОТКРЫТЬ"
        self.button_open.setVisible(False)  # прячем кнопку "ОТКРЫТЬ"
        self.button_open.clicked.connect(
            self.open_map)  # ждем событие от кнопки "ОТКРЫТЬ"

        self.button_save = QPushButton('СОХРАНИТЬ',
                                       self)  # создаем кнопку "СОХРАНИТЬ"
        self.button_save.resize(70, 30)  # задаем размер кнопки "СОХРАНИТЬ"
        self.button_save.setVisible(False)  # прячем кнопку "СОХРАНИТЬ"
        self.button_save.clicked.connect(
            self.save_map)  # ждем событие от кнопки "СОХРАНИТЬ"

        self.button_back = QPushButton("НАЗАД", self)  # создаем кнопку "НАЗАД"
        self.button_back.resize(70, 30)  # задаем размер кнопки "НАЗАД"
        self.button_back.setVisible(False)  # прячем кнопку "НАЗАД"
        self.button_back.clicked.connect(
            self.close)  # ждем событие от кнопки "НАЗАД"

        self.timer_edit_map = QTimer()
        self.timer_edit_map.timeout.connect(self.updateValues)
        self.timer_edit_map.start(200)

    def new_map(self):  # метод класса Edit_Map, новая карта
        if (not self.input_col.text().isdigit() or not self.input_row.text().isdigit()) or \
                (int(self.input_col.text()) < 14 or int(self.input_row.text()) < 14):
            # проверяем значения x, y. Если не числа, то выводим окно ошибки
            msg = QMessageBox()
            msg.setIcon(QMessageBox.Critical)
            msg.setText("Error")  # текст окна msg
            msg.setWindowTitle("Error")  # название окна msg
            msg.exec_()
            return

        self._col = int(self.input_col.text())  # запоминаем новое значение x
        self._row = int(self.input_row.text())  # запоминаем новое значение y
        self._sp_map = [[0 for i in range(self._col)] for j in range(self._row)
                        ]  # создаем список 0 по размерам x, y

        self.input_col.setVisible(False)  # прячем строку для ввода x
        self.input_row.setVisible(False)  # прячем строку для ввода y
        self.button_new_map.setVisible(False)  # прячем кнопку "СОЗДАТЬ КАРТУ"

        edit_map.move_button(
        )  # Расширяем окно и меняем положение кнопок "ОТКРЫТЬ", "НАЗАД", "СОЗДАТЬ", "СОХРАНИТЬ"

        self.button_back.setVisible(True)  # показываем кнопку "НАЗАД"
        self.button_save.setVisible(True)  # показываем кнопку "СОХРАНИТЬ"
        self.button_open.setVisible(True)  # показываем кнопку "ОТКРЫТЬ"
        self.button_create.setVisible(True)  # показываем кнопку "СОЗДАТЬ"
        self.center()  # отцентровываем окно относительно экрана

        for i in range(
                PIC
        ):  # записываем в elem_map изображения из которых будет состоять карта
            self._elem_map.append(QPixmap())
            self._elem_map[i].load(resource_path("PIC/" + str(i) + "_0.png"))
        self._flag_1 = True

    def center(self):  # функция отцентровывает окно относительно окна
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

    def paintEvent(self, event):
        if self._flag_1:
            qp = QPainter()
            qp.begin(self)

            qp.setBrush(QColor(255, 237,
                               0))  # задаем желтый цвет для рамки выбора
            qp.drawRect(self._col * 40 + 15, self._activ_pic * 50, 50,
                        50)  # задаем положение и размер рамки выбора

            for i in range(self._col):
                for j in range(self._row):
                    qp.setBrush(QColor(50, 50, 50))
                    qp.drawRect(i * 40, j * 40, 40, 40)
                    qp.drawPixmap(i * 40, j * 40, self._elem_map[
                        self._sp_map[j][i]])  # рисуем картинками из elem_map

            for i in range(PIC):
                qp.drawPixmap(self._col * 40 + 20, i * 50 + 5,
                              self._elem_map[i])

            if self._mouse_x < self._col * 40 and self._mouse_y < self._row * 40:
                qp.drawPixmap(self._mouse_x - 30, self._mouse_y - 30,
                              self._elem_map[self._activ_pic])
            qp.end()

    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            if self._mouse_x < self._col * 40 and self._mouse_y < self._row * 40:
                self._sp_map[self._mouse_y // 40][self._mouse_x //
                                                  40] = self._activ_pic
            for i in range(PIC):
                if self._col * 40 + 20 < self._mouse_x < self._col * 40 + 80 and \
                        i * 50 + 5 < self._mouse_y < i * 50 + 65:
                    self._activ_pic = i
                    break

    def mouseMoveEvent(self, event):
        self._mouse_x = event.x()
        self._mouse_y = event.y()

    def create_map(self):
        self.button_create.setVisible(False)
        self.button_open.setVisible(False)
        self.button_save.setVisible(False)
        self.button_back.setVisible(False)
        self._flag_1 = False
        self.input_col.setVisible(True)
        self.input_row.setVisible(True)
        self.button_new_map.setVisible(True)
        self.resize(200, 100)
        self.center()

    def save_map(self):
        stroka = ''
        for j in range(self._row):
            for i in range(self._col):
                stroka += str(self._sp_map[j][i])
            stroka += '\n'
        file_save_map = QFileDialog.getSaveFileName(self, filter='*.map')[0]
        if file_save_map != '':
            f = open(file_save_map, 'w', encoding="utf8")
            with f:
                f.write(stroka[:-1])
                self._flag_2 = False
            f.close()

    def open_map(self):
        file_save_map = QFileDialog.getOpenFileName(self, filter='*.map')[0]
        f = open(file_save_map, encoding="utf8")
        with f:
            old_map = f.readlines()
        f.close()
        self._row = len(old_map)
        self._col = len(old_map[0]) - 1
        self._sp_map = []
        for j in range(self._row):
            self._sp_map.append([])
            for i in range(self._col):
                self._sp_map[j].append(int(old_map[j][i]))
        edit_map.move_button()
        self.center()

    def close(self):
        if self._flag_2:
            result = QMessageBox.question(self, "ПРЕДУПРЕЖДЕНИЕ!",
                                          "Сохранить карту?",
                                          QMessageBox.Yes | QMessageBox.No,
                                          QMessageBox.No)
            if result == QMessageBox.Yes:
                edit_map.save_map()
        self.setVisible(False)
        game.setVisible(True)

    def updateValues(self):
        self.update()

    def move_button(self):
        self.resize(self._col * 40 + 100, self._row * 40)
        # расширяем окно по параметрам x, y, добавляем 100 по х для elem_map
        self.button_back.move(self._col * 40 + 15, self._row * 40 -
                              30)  # задаем положение кнопки "НАЗАД"
        self.button_save.move(self._col * 40 + 15, self._row * 40 -
                              60)  # задаем положение кнопки "СОХРАНИТЬ"
        self.button_open.move(self._col * 40 + 15, self._row * 40 -
                              90)  # задаем положение кнопки "ОТКРЫТЬ"
        self.button_create.move(self._col * 40 + 15, self._row * 40 -
                                120)  # задаем положение кнопки "СОЗДАТЬ"
Beispiel #27
0
class Index(QWidget):
    show_mainindex_sg = pyqtSignal(int, str)
    show_register_sg = pyqtSignal()

    def __init__(self, parent=None):
        super(Index, self).__init__(parent)
        self.desktop = QApplication.desktop()
        self.screenRect = self.desktop.screenGeometry()
        self.h = self.screenRect.height()
        self.w = self.screenRect.width()
        self.xr = self.w / 930
        self.yr = self.h / 640
        self.zr = min(self.xr, self.yr)
        self.top_wi = QWidget(self)
        self.logo_la = QLabel(self.top_wi)
        self.ind_wi = QWidget(self)
        self.login_but = QPushButton(self.ind_wi)
        self.joke_but = QPushButton(self.ind_wi)
        self.register_but = QPushButton(self.ind_wi)
        self.imp_la = QLabel(self.ind_wi)
        self.account_le = QLineEdit(self.ind_wi)
        self.psw_le = QLineEdit(self.ind_wi)
        self.loading = QLabel(self)
        self.gif = QMovie('./resource/image/load.gif')
        self.set_ui()
        with open('index.qss', 'r') as f:
            self.setStyleSheet(f.read())

    def set_ui(self):
        self.setWindowTitle('Login')
        self.setObjectName('index')
        self.resize(self.w, self.h)
        self.top_wi.setObjectName('top')
        self.top_wi.resize(930 * self.xr, 95 * self.yr)
        self.logo_la.setObjectName('logo')
        self.logo_la.resize(65 * self.xr, 65 * self.zr)
        self.logo_la.move(29 * self.xr, 16 * self.yr)
        effect = QGraphicsDropShadowEffect()
        effect.setOffset(10, 10)
        effect.setColor(QColor(0, 0, 0, 80))
        effect.setBlurRadius(20)
        self.ind_wi.setObjectName('login')
        self.ind_wi.resize(327 * self.xr, 388 * self.yr)
        self.ind_wi.move(300 * self.xr, 150 * self.yr)
        self.ind_wi.setGraphicsEffect(effect)
        self.joke_but.setObjectName('joke')
        self.joke_but.resize(130 * self.xr, 30 * self.yr)
        self.joke_but.move(76 * self.xr, 234 * self.yr)
        self.joke_but.setFlat(True)
        self.joke_but.setText('忘记密码?我也没办法')
        self.login_but.setObjectName('button')
        self.login_but.move(64 * self.xr, 260 * self.yr)
        self.login_but.resize(202 * self.xr, 45 * self.yr)
        self.login_but.setText('登陆')
        self.login_but.clicked.connect(self.login)
        self.register_but.setObjectName('button')
        self.register_but.move(64 * self.xr, 315 * self.yr)
        self.register_but.resize(202 * self.xr, 45 * self.yr)
        self.register_but.setText('注册')
        self.register_but.clicked.connect(self.show_register)
        self.imp_la.setObjectName('imp_label')
        self.imp_la.resize(100 * self.zr, 100 * self.zr)
        self.imp_la.move(115 * self.xr + 100 * (self.xr - self.zr) / 2, 15 * self.yr)
        self.imp_la.setStyleSheet('border-radius:{}px;'.format(self.zr * 49))
        self.account_le.setObjectName('input')
        self.account_le.setTextMargins(20, 0, 0, 0)
        self.account_le.resize(213 * self.xr, 45 * self.yr)
        self.account_le.move(59 * self.xr, 126 * self.yr)
        self.account_le.setPlaceholderText('账号')
        self.psw_le.setObjectName('input')
        self.psw_le.setTextMargins(20, 0, 0, 0)
        self.psw_le.resize(213 * self.xr, 45 * self.yr)
        self.psw_le.move(59 * self.xr, 181 * self.yr)
        self.psw_le.setPlaceholderText('密码')
        self.psw_le.setEchoMode(QLineEdit.Password)
        self.loading.setObjectName('load')
        self.loading.resize(self.xr * 150, self.yr * 150)
        self.loading.move(self.xr * 760, self.yr * 500)
        self.loading.setScaledContents(True)
        self.loading.setMovie(self.gif)
        self.gif.start()
        self.ind_wi.setStyleSheet('#input{border-radius:' + str(self.zr * 20) + 'px;}' + '#button{border-radius:' + str(
            self.zr * 20) + 'px;' + 'font-size:' + str(int(self.zr * 18)) + 'px;}')

    def login(self):
        account_p = self.account_le.text()
        psw_p = self.psw_le.text()
        dic = login(account_p, psw_p)
        if dic['status'] == 0:
            self.show_mainindex_sg.emit(dic['data']['user_id'], dic['data']['token'])
        elif dic['status'] == 1:
            self.account_le.clear()
            self.psw_le.clear()
            self.account_le.setStyleSheet('border:4px solid;border-color:red;')
            self.account_le.setPlaceholderText('网络超时')
        else:
            self.account_le.clear()
            self.psw_le.clear()
            self.account_le.setStyleSheet('border:4px solid;border-color:red;')
            self.account_le.setPlaceholderText('账号不存在或密码错误')

    def show_register(self):
        self.show_register_sg.emit()
Beispiel #28
0
class UI(QtWidgets.QWidget):
    """软件的界面布局"""
    def __init__(self):
        super().__init__()
        self.title = '扫货助手V2.3'
        self.left = 300
        self.top = 300
        self.width = 700
        self.height = 850

        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        # 最低价
        self.label_min_price = QLabel('最低价', self)
        self.label_min_price.move(20, 20)
        self.textbox_min_price = QLineEdit(self)
        self.textbox_min_price.move(50, 20)
        self.textbox_min_price.resize(100, 25)

        # 最高价
        self.label_max_price = QLabel('最高价', self)
        self.label_max_price.move(175, 20)
        self.textbox_max_price = QLineEdit(self)
        self.textbox_max_price.move(225, 20)
        self.textbox_max_price.resize(100, 25)

        # 浮动
        self.label_flow_price = QLabel('浮动价格', self)
        self.label_flow_price.move(20, 60)
        self.textbox_flow_price = QLineEdit(self)
        self.textbox_flow_price.move(85, 60)
        self.textbox_flow_price.resize(65, 25)

        # 浮动类型
        self.label_flow_type = QLabel('类型', self)
        self.label_flow_type.move(175, 60)
        self.select = QComboBox(self)
        self.select.move(225, 60)
        self.select.addItems(['增加', '降低'])
        self.select.resize(60, 20)

        # 查找次数

        self.btn_login = QPushButton('登录', self)
        self.btn_login.move(50, 100)
        self.btn_login.resize(75, 30)
        self.btn_login.clicked.connect(self.login_driver)

        self.btn_start = QPushButton('开始扫货', self)
        self.btn_start.move(150, 100)
        self.btn_start.resize(75, 30)
        self.btn_start.clicked.connect(self.start_buy)

        self.btn_stop = QPushButton('停止扫货', self)
        self.btn_stop.move(250, 100)
        self.btn_stop.resize(75, 30)
        self.btn_stop.clicked.connect(self.stop_buy)

        self.btn_stop = QPushButton('保存设置', self)
        self.btn_stop.move(350, 100)
        self.btn_stop.resize(75, 30)
        self.btn_stop.clicked.connect(self.save_settings)

        # 日志框
        self.label_log = QLabel('购\n买\n记\n录', self)
        self.label_log.move(23, 150)
        self.textbox_log = QTextBrowser(self)
        self.textbox_log.move(50, 150)
        self.textbox_log.resize(600, 670)
Beispiel #29
0
class BearDetectionWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.mImage = None
        self.mQImage = QImage()
        self.mDetectionModel = get_bear_detection_model()
        self.initUI()

    def initUI(self):

        self.setGeometry(200, 100, 600, 600)
        self.setWindowTitle('Bear Recognizer')
        self.setWindowIcon(QIcon('icon.jpg'))
        ## and hint
        hint = QLabel(self)
        hint.setText("输入要识别的图片地址")
        hint.move(10, 20)

        ##create text box
        self.textbox = QLineEdit(self)
        self.textbox.move(20, 50)
        self.textbox.resize(400, 30)

        ##add button
        self.button = QPushButton('添加图片', self)
        self.button.move(60, 90)
        self.button.clicked.connect(self.on_load_image)

        ##add button
        self.button = QPushButton('识别', self)
        self.button.move(200, 90)
        self.button.clicked.connect(self.on_detect_bear)

        ## and result label
        self.result_hint = QLabel(self)
        self.result_hint.setText("                            ")
        self.result_hint.move(350, 100)

        self.show()

    def get_cv2image(self, image):
        cv2_image = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
        cv2_image = cv2.resize(cv2_image, (416, 416),
                               interpolation=cv2.INTER_CUBIC)
        return cv2_image

    def get_qimage(self, image):
        height, width, colors = image.shape
        bytesPerLine = 3 * width
        image = QImage(image.data, width, height, bytesPerLine,
                       QImage.Format_RGB888)
        image = image.rgbSwapped()
        return image

    def get_image_from_url(self, url):
        response = requests.get(url)
        img = Image.open(BytesIO(response.content))
        return img

    @pyqtSlot()
    def on_load_image(self):
        textboxValue = self.textbox.text()
        try:
            self.mImage = self.get_image_from_url(textboxValue)
            cv2_image = self.get_cv2image(self.mImage)
            self.mQImage = self.get_qimage(cv2_image)
            self.update()
        except:
            QMessageBox.information(self, "错误", "图片加载失败", QMessageBox.Yes)

    @pyqtSlot()
    def on_detect_bear(self):
        if self.mImage is None:
            QMessageBox.information(self, "错误", "请先加载图片", QMessageBox.Yes)
            return
        predictions = self.mDetectionModel.predict_image(self.mImage)
        predictions.sort(key=lambda k: k['probability'], reverse=True)
        pred = predictions[0]
        cv2_image = self.get_cv2image(self.mImage)
        (x, y, w, h) = [int(i * 416) for i in pred.get('boundingBox').values()]

        cv2.rectangle(cv2_image, (x, y), (x + w, y + h), (0, 0, 255), 1)
        hint_text = pred.get('tagName') + ': ' + str(pred.get('probability'))
        cv2.putText(cv2_image, hint_text, (x, y + min(w, 10)),
                    cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1)
        self.mQImage = self.get_qimage(cv2_image)

        #self.result_hint.setText(pred.get('tagName')+': '+str(pred.get('probability')))
        self.update()

    def paintEvent(self, QPaintEvent):
        painter = QPainter()
        painter.begin(self)
        painter.drawImage(10, 150, self.mQImage)
        painter.end()