修改代码

master
abc15379 1 year ago
parent f4d6e562b0
commit 9d599f49dc

@ -0,0 +1,525 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DBNavigator.Project.DataEditorManager">
<record-view-column-sorting-type value="BY_INDEX" />
<value-preview-text-wrapping value="true" />
<value-preview-pinned value="false" />
</component>
<component name="DBNavigator.Project.DatabaseBrowserManager">
<autoscroll-to-editor value="false" />
<autoscroll-from-editor value="true" />
<show-object-properties value="true" />
<loaded-nodes />
</component>
<component name="DBNavigator.Project.DatabaseConsoleManager">
<connection id="08cdce82-e17c-4657-88fb-4d2ee5b7f6be">
<console name="rule" type="STANDARD" schema="" session="Main" />
</connection>
</component>
<component name="DBNavigator.Project.DatabaseEditorStateManager">
<last-used-providers />
</component>
<component name="DBNavigator.Project.DatabaseFileManager">
<open-files />
</component>
<component name="DBNavigator.Project.DatasetFilterManager">
<filter-actions connection-id="08cdce82-e17c-4657-88fb-4d2ee5b7f6be" dataset="public.table1" active-filter-id="d0a5e6a4-03b7-4521-ba69-db57026f9eec">
<filter id="d0a5e6a4-03b7-4521-ba69-db57026f9eec" name="Filter" temporary="false" custom-name="false" type="basic" join-type="AND">
<condition column="id" operator="is not null" value="" active="true" />
</filter>
</filter-actions>
</component>
<component name="DBNavigator.Project.ObjectQuickFilterManager">
<last-used-operator value="EQUAL" />
<filters />
</component>
<component name="DBNavigator.Project.Settings">
<connections>
<connection id="08cdce82-e17c-4657-88fb-4d2ee5b7f6be" active="true" signed="true">
<database>
<name value="rule" />
<description value="" />
<database-type value="POSTGRES" />
<config-type value="BASIC" />
<database-version value="15.3" />
<driver-source value="BUNDLED" />
<driver-library value="" />
<driver value="" />
<url-type value="DATABASE" />
<host value="localhost" />
<port value="5432" />
<database value="gamerule" />
<tns-folder value="" />
<tns-profile value="" />
<type value="USER_PASSWORD" />
<user value="postgres" />
<deprecated-pwd value="MTIzNDU2" />
</database>
<properties>
<auto-commit value="false" />
</properties>
<ssh-settings>
<active value="false" />
<proxy-host value="" />
<proxy-port value="22" />
<proxy-user value="" />
<deprecated-proxy-pwd value="" />
<auth-type value="PASSWORD" />
<key-file value="" />
<key-passphrase value="" />
</ssh-settings>
<ssl-settings>
<active value="false" />
<certificate-authority-file value="" />
<client-certificate-file value="" />
<client-key-file value="" />
</ssl-settings>
<details>
<charset value="UTF-8" />
<session-management value="true" />
<ddl-file-binding value="true" />
<database-logging value="true" />
<connect-automatically value="true" />
<restore-workspace value="true" />
<restore-workspace-deep value="false" />
<environment-type value="default" />
<connectivity-timeout value="30" />
<idle-time-to-disconnect value="30" />
<idle-time-to-disconnect-pool value="5" />
<credential-expiry-time value="10" />
<max-connection-pool-size value="7" />
<alternative-statement-delimiter value="" />
</details>
<debugger>
<compile-dependencies value="true" />
<tcp-driver-tunneling value="false" />
<tcp-host-address value="" />
<tcp-port-from value="4000" />
<tcp-port-to value="4999" />
</debugger>
<object-filters hide-empty-schemas="false" hide-pseudo-columns="false">
<object-type-filter>
<object-type name="SCHEMA" enabled="true" />
<object-type name="USER" enabled="true" />
<object-type name="ROLE" enabled="true" />
<object-type name="PRIVILEGE" enabled="true" />
<object-type name="CHARSET" enabled="true" />
<object-type name="TABLE" enabled="true" />
<object-type name="VIEW" enabled="true" />
<object-type name="MATERIALIZED_VIEW" enabled="true" />
<object-type name="NESTED_TABLE" enabled="true" />
<object-type name="COLUMN" enabled="true" />
<object-type name="INDEX" enabled="true" />
<object-type name="CONSTRAINT" enabled="true" />
<object-type name="DATASET_TRIGGER" enabled="true" />
<object-type name="DATABASE_TRIGGER" enabled="true" />
<object-type name="SYNONYM" enabled="true" />
<object-type name="SEQUENCE" enabled="true" />
<object-type name="PROCEDURE" enabled="true" />
<object-type name="FUNCTION" enabled="true" />
<object-type name="PACKAGE" enabled="true" />
<object-type name="TYPE" enabled="true" />
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
<object-type name="ARGUMENT" enabled="true" />
<object-type name="DIMENSION" enabled="true" />
<object-type name="CLUSTER" enabled="true" />
<object-type name="DBLINK" enabled="true" />
</object-type-filter>
<object-name-filters />
</object-filters>
</connection>
</connections>
<browser-settings>
<general>
<display-mode value="TABBED" />
<navigation-history-size value="100" />
<show-object-details value="false" />
</general>
<filters>
<object-type-filter>
<object-type name="SCHEMA" enabled="true" />
<object-type name="USER" enabled="true" />
<object-type name="ROLE" enabled="true" />
<object-type name="PRIVILEGE" enabled="true" />
<object-type name="CHARSET" enabled="true" />
<object-type name="TABLE" enabled="true" />
<object-type name="VIEW" enabled="true" />
<object-type name="MATERIALIZED_VIEW" enabled="true" />
<object-type name="NESTED_TABLE" enabled="true" />
<object-type name="COLUMN" enabled="true" />
<object-type name="INDEX" enabled="true" />
<object-type name="CONSTRAINT" enabled="true" />
<object-type name="DATASET_TRIGGER" enabled="true" />
<object-type name="DATABASE_TRIGGER" enabled="true" />
<object-type name="SYNONYM" enabled="true" />
<object-type name="SEQUENCE" enabled="true" />
<object-type name="PROCEDURE" enabled="true" />
<object-type name="FUNCTION" enabled="true" />
<object-type name="PACKAGE" enabled="true" />
<object-type name="TYPE" enabled="true" />
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
<object-type name="ARGUMENT" enabled="true" />
<object-type name="DIMENSION" enabled="true" />
<object-type name="CLUSTER" enabled="true" />
<object-type name="DBLINK" enabled="true" />
</object-type-filter>
</filters>
<sorting>
<object-type name="COLUMN" sorting-type="NAME" />
<object-type name="FUNCTION" sorting-type="NAME" />
<object-type name="PROCEDURE" sorting-type="NAME" />
<object-type name="ARGUMENT" sorting-type="POSITION" />
<object-type name="TYPE ATTRIBUTE" sorting-type="POSITION" />
</sorting>
<default-editors>
<object-type name="VIEW" editor-type="SELECTION" />
<object-type name="PACKAGE" editor-type="SELECTION" />
<object-type name="TYPE" editor-type="SELECTION" />
</default-editors>
</browser-settings>
<navigation-settings>
<lookup-filters>
<lookup-objects>
<object-type name="SCHEMA" enabled="true" />
<object-type name="USER" enabled="false" />
<object-type name="ROLE" enabled="false" />
<object-type name="PRIVILEGE" enabled="false" />
<object-type name="CHARSET" enabled="false" />
<object-type name="TABLE" enabled="true" />
<object-type name="VIEW" enabled="true" />
<object-type name="MATERIALIZED VIEW" enabled="true" />
<object-type name="INDEX" enabled="true" />
<object-type name="CONSTRAINT" enabled="true" />
<object-type name="DATASET TRIGGER" enabled="true" />
<object-type name="DATABASE TRIGGER" enabled="true" />
<object-type name="SYNONYM" enabled="false" />
<object-type name="SEQUENCE" enabled="true" />
<object-type name="PROCEDURE" enabled="true" />
<object-type name="FUNCTION" enabled="true" />
<object-type name="PACKAGE" enabled="true" />
<object-type name="TYPE" enabled="true" />
<object-type name="DIMENSION" enabled="false" />
<object-type name="CLUSTER" enabled="false" />
<object-type name="DBLINK" enabled="true" />
</lookup-objects>
<force-database-load value="false" />
<prompt-connection-selection value="true" />
<prompt-schema-selection value="true" />
</lookup-filters>
</navigation-settings>
<dataset-grid-settings>
<general>
<enable-zooming value="true" />
<enable-column-tooltip value="true" />
</general>
<sorting>
<nulls-first value="true" />
<max-sorting-columns value="4" />
</sorting>
<audit-columns>
<column-names value="" />
<visible value="true" />
<editable value="false" />
</audit-columns>
</dataset-grid-settings>
<dataset-editor-settings>
<text-editor-popup>
<active value="false" />
<active-if-empty value="false" />
<data-length-threshold value="100" />
<popup-delay value="1000" />
</text-editor-popup>
<values-actions-popup>
<show-popup-button value="true" />
<element-count-threshold value="1000" />
<data-length-threshold value="250" />
</values-actions-popup>
<general>
<fetch-block-size value="100" />
<fetch-timeout value="30" />
<trim-whitespaces value="true" />
<convert-empty-strings-to-null value="true" />
<select-content-on-cell-edit value="true" />
<large-value-preview-active value="true" />
</general>
<filters>
<prompt-filter-dialog value="true" />
<default-filter-type value="BASIC" />
</filters>
<qualified-text-editor text-length-threshold="300">
<content-types>
<content-type name="Text" enabled="true" />
<content-type name="Properties" enabled="true" />
<content-type name="XML" enabled="true" />
<content-type name="DTD" enabled="true" />
<content-type name="HTML" enabled="true" />
<content-type name="XHTML" enabled="true" />
<content-type name="SQL" enabled="true" />
<content-type name="PL/SQL" enabled="true" />
<content-type name="JSON" enabled="true" />
<content-type name="JSON5" enabled="true" />
<content-type name="YAML" enabled="true" />
</content-types>
</qualified-text-editor>
<record-navigation>
<navigation-target value="VIEWER" />
</record-navigation>
</dataset-editor-settings>
<code-editor-settings>
<general>
<show-object-navigation-gutter value="false" />
<show-spec-declaration-navigation-gutter value="true" />
<enable-spellchecking value="true" />
<enable-reference-spellchecking value="false" />
</general>
<confirmations>
<save-changes value="false" />
<revert-changes value="true" />
</confirmations>
</code-editor-settings>
<code-completion-settings>
<filters>
<basic-filter>
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
<filter-element type="RESERVED_WORD" id="function" selected="true" />
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
<filter-element type="OBJECT" id="schema" selected="true" />
<filter-element type="OBJECT" id="role" selected="true" />
<filter-element type="OBJECT" id="user" selected="true" />
<filter-element type="OBJECT" id="privilege" selected="true" />
<user-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="false" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</user-schema>
<public-schema>
<filter-element type="OBJECT" id="table" selected="false" />
<filter-element type="OBJECT" id="view" selected="false" />
<filter-element type="OBJECT" id="materialized view" selected="false" />
<filter-element type="OBJECT" id="index" selected="false" />
<filter-element type="OBJECT" id="constraint" selected="false" />
<filter-element type="OBJECT" id="trigger" selected="false" />
<filter-element type="OBJECT" id="synonym" selected="false" />
<filter-element type="OBJECT" id="sequence" selected="false" />
<filter-element type="OBJECT" id="procedure" selected="false" />
<filter-element type="OBJECT" id="function" selected="false" />
<filter-element type="OBJECT" id="package" selected="false" />
<filter-element type="OBJECT" id="type" selected="false" />
<filter-element type="OBJECT" id="dimension" selected="false" />
<filter-element type="OBJECT" id="cluster" selected="false" />
<filter-element type="OBJECT" id="dblink" selected="false" />
</public-schema>
<any-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</any-schema>
</basic-filter>
<extended-filter>
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
<filter-element type="RESERVED_WORD" id="function" selected="true" />
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
<filter-element type="OBJECT" id="schema" selected="true" />
<filter-element type="OBJECT" id="user" selected="true" />
<filter-element type="OBJECT" id="role" selected="true" />
<filter-element type="OBJECT" id="privilege" selected="true" />
<user-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</user-schema>
<public-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</public-schema>
<any-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</any-schema>
</extended-filter>
</filters>
<sorting enabled="true">
<sorting-element type="RESERVED_WORD" id="keyword" />
<sorting-element type="RESERVED_WORD" id="datatype" />
<sorting-element type="OBJECT" id="column" />
<sorting-element type="OBJECT" id="table" />
<sorting-element type="OBJECT" id="view" />
<sorting-element type="OBJECT" id="materialized view" />
<sorting-element type="OBJECT" id="index" />
<sorting-element type="OBJECT" id="constraint" />
<sorting-element type="OBJECT" id="trigger" />
<sorting-element type="OBJECT" id="synonym" />
<sorting-element type="OBJECT" id="sequence" />
<sorting-element type="OBJECT" id="procedure" />
<sorting-element type="OBJECT" id="function" />
<sorting-element type="OBJECT" id="package" />
<sorting-element type="OBJECT" id="type" />
<sorting-element type="OBJECT" id="dimension" />
<sorting-element type="OBJECT" id="cluster" />
<sorting-element type="OBJECT" id="dblink" />
<sorting-element type="OBJECT" id="schema" />
<sorting-element type="OBJECT" id="role" />
<sorting-element type="OBJECT" id="user" />
<sorting-element type="RESERVED_WORD" id="function" />
<sorting-element type="RESERVED_WORD" id="parameter" />
</sorting>
<format>
<enforce-code-style-case value="true" />
</format>
</code-completion-settings>
<execution-engine-settings>
<statement-execution>
<fetch-block-size value="100" />
<execution-timeout value="20" />
<debug-execution-timeout value="600" />
<focus-result value="false" />
<prompt-execution value="false" />
</statement-execution>
<script-execution>
<command-line-interfaces />
<execution-timeout value="300" />
</script-execution>
<method-execution>
<execution-timeout value="30" />
<debug-execution-timeout value="600" />
<parameter-history-size value="10" />
</method-execution>
</execution-engine-settings>
<operation-settings>
<transactions>
<uncommitted-changes>
<on-project-close value="ASK" />
<on-disconnect value="ASK" />
<on-autocommit-toggle value="ASK" />
</uncommitted-changes>
<multiple-uncommitted-changes>
<on-commit value="ASK" />
<on-rollback value="ASK" />
</multiple-uncommitted-changes>
</transactions>
<session-browser>
<disconnect-session value="ASK" />
<kill-session value="ASK" />
<reload-on-filter-change value="false" />
</session-browser>
<compiler>
<compile-type value="KEEP" />
<compile-dependencies value="ASK" />
<always-show-controls value="false" />
</compiler>
<debugger>
<debugger-type value="JDBC" />
</debugger>
</operation-settings>
<ddl-file-settings>
<extensions>
<mapping file-type-id="VIEW" extensions="vw" />
<mapping file-type-id="TRIGGER" extensions="trg" />
<mapping file-type-id="PROCEDURE" extensions="prc" />
<mapping file-type-id="FUNCTION" extensions="fnc" />
<mapping file-type-id="PACKAGE" extensions="pkg" />
<mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
<mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
<mapping file-type-id="TYPE" extensions="tpe" />
<mapping file-type-id="TYPE_SPEC" extensions="tps" />
<mapping file-type-id="TYPE_BODY" extensions="tpb" />
</extensions>
<general>
<lookup-ddl-files value="true" />
<create-ddl-files value="false" />
<synchronize-ddl-files value="true" />
<use-qualified-names value="false" />
<make-scripts-rerunnable value="true" />
</general>
</ddl-file-settings>
<general-settings>
<regional-settings>
<date-format value="MEDIUM" />
<number-format value="UNGROUPED" />
<locale value="SYSTEM_DEFAULT" />
<use-custom-formats value="false" />
</regional-settings>
<environment>
<environment-types>
<environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" />
<environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" />
<environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" />
<environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" />
</environment-types>
<visibility-settings>
<connection-tabs value="true" />
<dialog-headers value="true" />
<object-editor-tabs value="true" />
<script-editor-tabs value="false" />
<execution-result-tabs value="true" />
</visibility-settings>
</environment>
</general-settings>
</component>
</project>

@ -0,0 +1,76 @@
import pyautogui
import cv2
import numpy as np
class SetShotArea():
# 获取屏幕宽度和高度
screen_width, screen_height = pyautogui.size()
# 用于存储用户绘制的矩形坐标
rect_coordinates = []
# 获取屏幕截图
capture = pyautogui.screenshot()
# 将截图转换为OpenCV格式
capture = np.array(capture)
capture = cv2.cvtColor(capture, cv2.COLOR_RGB2BGR)
# 回调函数,用于处理鼠标事件
def on_mouse(self, event, x, y, flags, param):
global rect_coordinates
# 当左键按下时记录起始坐标,并允许实时更新
if event == cv2.EVENT_LBUTTONDOWN:
rect_coordinates = [(x, y)]
# 当鼠标移动时,实时更新矩形大小并绘制在截图上
if event == cv2.EVENT_MOUSEMOVE and (flags & cv2.EVENT_FLAG_LBUTTON):
temp_capture = self.capture.copy()
cv2.rectangle(temp_capture, rect_coordinates[0], (x, y), (0, 255, 0), 1)
cv2.imshow("Capture", temp_capture)
# 当左键释放时记录结束坐标,并绘制最终矩形
elif event == cv2.EVENT_LBUTTONUP:
rect_coordinates.append((x, y))
cv2.rectangle(self.capture, rect_coordinates[0], rect_coordinates[1], (0, 255, 0), 2)
cv2.imshow("Capture", self.capture)
# 回调函数,用于处理鼠标事件
def setShotArea(self):
# 创建窗口并设置鼠标事件回调函数
cv2.namedWindow("Capture", cv2.WINDOW_NORMAL)
cv2.setWindowProperty("Capture", cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
cv2.setMouseCallback("Capture", self.on_mouse)
while True:
cv2.imshow("Capture", self.capture)
key = cv2.waitKey(1) & 0xFF
# 当用户按下'Enter'键时截取矩形区域并保存为文件
if key == 13:
if len(rect_coordinates) == 2:
x1, y1 = rect_coordinates[0]
x2, y2 = rect_coordinates[1]
# 截取矩形区域
cropped_area = self.capture[min(y1, y2):max(y1, y2), min(x1, x2):max(x1, x2)]
shotArea = {'left': min(x1, x2), 'top': min(y1, y2), 'width': max(x1, x2) - min(x1, x2),
'height': max(y1, y2) - min(y1, y2)}
print(shotArea)
return shotArea
# 保存截图
# cv2.imwrite("cropped_area.png", cropped_area)
# print("截图已保存为cropped_area(%d,%d;%d,%d).png" % (min(y1, y2), max(y1, y2), min(x1, x2), max(x1, x2)))
break
else:
print("请先绘制矩形区域再按下'Enter'键进行截图!")
cv2.destroyAllWindows()
it = SetShotArea()
q = it.setShotArea()

@ -0,0 +1,23 @@
import psycopg2
# -*- coding: utf-8 -*-
import psycopg2
# 获得连接
conn = psycopg2.connect(database="gamerule", user="postgres", password="123456", host="localhost", port="5432")
# 获得游标对象
cursor = conn.cursor()
sql = "SELECT * FROM table1;"
# 执行SQL查询
cursor.execute(sql)
# 获取查询结果
rows = cursor.fetchall()
# 处理查询结果
for row in rows:
print(row)
# conn.commit()
# 关闭数据库连接
conn.close()

@ -1,12 +1,14 @@
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QListWidget, QListWidgetItem
import pyautogui as p
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QListWidget, QListWidgetItem, QComboBox
from PyQt5.QtCore import Qt
from PyQt5 import uic
from translate_window import translate
from settingrule_window import settingrule
from selectRuleOrder import orderselet
from control.contrltools.setShotArea import SetShotArea
class MyApp(QMainWindow):
@ -15,6 +17,8 @@ class MyApp(QMainWindow):
uic.loadUi('res/ui/main_window.ui', self)
self.shotArea = {}
self.translate_window = translate()
self.setRule_window = settingrule()
self.orderSelect_window = orderselet()
@ -25,6 +29,13 @@ class MyApp(QMainWindow):
self.autoplay = self.findChild(QPushButton, 'autoGameBtn')
self.ruleList = self.findChild(QListWidget, 'ruleList')
self.language = self.findChild(QComboBox, 'language')
self.choseLocationBtn = self.findChild(QPushButton, 'choseLocationBtn')
self.language.activated.connect(self.selectTransLanguage)
self.choseLocationBtn.clicked.connect(self.takeScreenShot)
self.addRuleBtn.clicked.connect(self.show_settingrule_window)
self.translateBtn.clicked.connect(self.show_translate_window)
self.autoplay.clicked.connect(self.show_orderselect_window)
@ -36,12 +47,18 @@ class MyApp(QMainWindow):
self.ruleList.itemClicked.connect(self.onItemClicked)
self.listIndexs = self.get_item_indexs(self.ruleList)
def takeScreenShot(self): # 截屏
shot = SetShotArea()
self.shotArea = shot.setShotArea()
screenshot = p.screenshot(region=(self.shotArea['left'], self.shotArea['top'],
self.shotArea['width'], self.shotArea['height']))
def show_orderselect_window(self):
item_states = self.get_item_states(self.ruleList)
for item_text, item_state in item_states.items():
if item_state == Qt.Checked:
item = QListWidgetItem(item_text)
item.setFlags(item.flags()|Qt.ItemIsSelectable|Qt.ItemIsUserCheckable|Qt.ItemIsEnabled)
item.setFlags(item.flags() | Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
item.setCheckState(Qt.Unchecked)
self.orderSelect_window.order_list.addItem(item)
self.orderSelect_window.show()
@ -82,6 +99,15 @@ class MyApp(QMainWindow):
item_indexs[item_text] = index
return item_indexs
def selectTransLanguage(self, index): # 各种语言选项的返回值
selected_language = self.language.itemText(index)
if selected_language == "日语":
print("jap")
elif selected_language == "法语":
print("fra")
elif selected_language == "英语":
print("eng")
if __name__ == "__main__":
app = QApplication(sys.argv)

@ -1,4 +1,4 @@
from PyQt5.QtWidgets import QMainWindow, QWidget
from PyQt5.QtWidgets import QMainWindow, QWidget, QGridLayout, QLabel, QPushButton
from PyQt5 import uic
@ -6,4 +6,46 @@ class operateselect(QMainWindow):
def __init__(self):
super().__init__()
self.selectedWidget = None
uic.loadUi('res/ui/operationSelect_window.ui', self)
self.findQGridLayout()
self.confirmBtn = self.findChild(QPushButton, 'confirmBtn')#确定按钮
self.confirmBtn.clicked.connect(self.confirm_clicked)
def confirm_clicked(self):
print("已选择:", self.getOperator())
self.close()
def findQGridLayout(self): # 找到QGridLayout
grid_layout = self.findChild(QGridLayout, "gridLayout")
if grid_layout:
for i in range(grid_layout.rowCount()):
for j in range(grid_layout.columnCount()):
item = grid_layout.itemAtPosition(i, j)
if item and isinstance(item.widget(), QWidget):
widget = item.widget()
widget.mousePressEvent = lambda event, clickedwidget=widget: self.onWidgetClicked(clickedwidget)
self.selectedWidget = None
def onWidgetClicked(self, clickedwidget):
# 将之前被选中的QWidget的背景颜色恢复为默认
if self.selectedWidget:
self.selectedWidget.setStyleSheet("background-color: none;")
# 设置被选中的QWidget的背景颜色为浅蓝色
clickedwidget.setStyleSheet("background-color: lightblue;")
self.selectedWidget = clickedwidget
label = self.selectedWidget.findChild(QLabel)
if label:
print("选中的标签文本:", label.text())
self.setOperator(label.text())
else:
print("未找到标签文本")
def setOperator(self,opt_text):#获取到操作类型值
self.operator_text = opt_text
def getOperator(self):#返回操作类型值
return self.operator_text

@ -122,9 +122,11 @@ def find_target_level():
print("on purpose chapter")
else:
return False
while DealPicture.find_photo_center(
'../pictures/level_1-1.png', 1, 0.9) is None and DealPicture.find_photo_center(
'../pictures/level_1-7.png', 1, 0.9) is None:
while (DealPicture.find_photo_center(
'../pictures/level_1-1.png', 1, 0.9) is None
and
DealPicture.find_photo_center('../pictures/level_1-7.png', 1, 0.9) is None):
drag_position = cv2.imread('../pictures/back_btn.png')
name = 'level_1-7.png'
if DealPicture.find_photo_center('../pictures/back_btn.png', 2):
@ -260,19 +262,23 @@ class WorkerThread(QThread):
os.chdir('res/rules')
current_directory = os.getcwd()
print("Current working directory:", current_directory)
# i = 0
# if find_target_level():
# while i < 10:
# fight_time()
# else:
# backToTerminal()
# while fight_time() is False and i < 10:
# while find_target_level() is False:
# while find_target_chapter() is False:
# while backToTerminal() is False:
# print("开始")
# i += 1
i = 0
if find_target_level():
while i < 10:
fight_time()
else:
backToTerminal()
while fight_time() is False:
while find_target_level() is False:
while find_target_chapter() is False:
while backToTerminal() is False:
print("开始")
i += 1
while i < 10:
fight_time()
i += 1
os.chdir('../../../windows')
current_directory = os.getcwd()
print("Current working directory:", current_directory)
print("自动战斗完毕")
self.finished.emit()

@ -1,7 +0,0 @@
pOffsetX = 2
pOffsetY = 1
if pOffsetX:
poffsetx = pOffsetX
print(1)
if pOffsetY:
poffsety = pOffsetY

@ -0,0 +1,47 @@
import random
from hashlib import md5
import requests
import json
def translate_text(text, from_lang, to_lang, api_key):
base_url = "https://fanyi-api.baidu.com/api/trans/vip/translate"
def make_md5(s, encoding='utf-8'):
return md5(s.encode(encoding)).hexdigest()
salt = random.randint(32768, 65536)
sign = make_md5('20220121001062201' + text + str(salt) + api_key)
params = {
'q': text,
'from': from_lang,
'to': to_lang,
'appid': '20220121001062201',
'salt': salt,
'sign': sign,
}
response = requests.get(base_url, params=params)
result = response.json()
if 'trans_result' in result:
translated_text = result['trans_result'][0]['dst']
return translated_text
else:
return '翻译失败'
# 输入要翻译的文本
text_to_translate = input("请输入要翻译的文本:")
# 设置源语言和目标语言
from_language = 'auto' # 自动检测语言
to_language = 'zh' # 翻译成中文
# 替换为您的API密钥
api_key = 'LxybddF5Y966dC1BXTc5'
# 调用翻译函数并输出结果
translated_text = translate_text(text_to_translate, from_language, to_language, api_key)
if translated_text:
print("翻译结果:", translated_text)
else:
print("翻译失败。")

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>352</width>
<height>803</height>
<width>350</width>
<height>809</height>
</rect>
</property>
<property name="windowTitle">
@ -114,7 +114,7 @@
<string>语言选择:</string>
</property>
</widget>
<widget class="QComboBox" name="Lauguage">
<widget class="QComboBox" name="language">
<property name="geometry">
<rect>
<x>50</x>
@ -123,11 +123,19 @@
<height>25</height>
</rect>
</property>
<property name="currentText">
<string>日语</string>
</property>
<item>
<property name="text">
<string>日语</string>
</property>
</item>
<item>
<property name="text">
<string>法语</string>
</property>
</item>
<item>
<property name="text">
<string>英语</string>

@ -6,212 +6,210 @@
<rect>
<x>0</x>
<y>0</y>
<width>693</width>
<height>431</height>
<width>663</width>
<height>465</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QWidget" name="widget" native="true">
<widget class="QWidget" name="widget_9" native="true">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>691</width>
<height>341</height>
<width>671</width>
<height>471</height>
</rect>
</property>
<widget class="QWidget" name="verticalLayoutWidget">
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>101</width>
<height>101</height>
<x>10</x>
<y>10</y>
<width>641</width>
<height>321</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGraphicsView" name="graphicsView"/>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>点击操作</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QWidget" name="widget" native="true">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGraphicsView" name="opr_mouseClick">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;12&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="mouseClick">
<property name="text">
<string>点击操作</string>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="verticalLayoutWidget_2">
<property name="geometry">
<rect>
<x>130</x>
<y>0</y>
<width>101</width>
<height>101</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QGraphicsView" name="graphicsView_2"/>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>长按操作</string>
</property>
<item row="0" column="1">
<widget class="QWidget" name="widget_2" native="true">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QGraphicsView" name="opr_holdTap"/>
</item>
<item>
<widget class="QLabel" name="holdTap">
<property name="text">
<string>长按操作</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="verticalLayoutWidget_3">
<property name="geometry">
<rect>
<x>260</x>
<y>0</y>
<width>101</width>
<height>101</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QGraphicsView" name="graphicsView_3"/>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>左划操作</string>
</property>
<item row="0" column="2">
<widget class="QWidget" name="widget_3" native="true">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QGraphicsView" name="opr_left"/>
</item>
<item>
<widget class="QLabel" name="left">
<property name="text">
<string>左滑操作</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="verticalLayoutWidget_4">
<property name="geometry">
<rect>
<x>390</x>
<y>0</y>
<width>101</width>
<height>101</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QGraphicsView" name="graphicsView_4"/>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>右划操作</string>
</property>
<item row="0" column="3">
<widget class="QWidget" name="widget_4" native="true">
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QGraphicsView" name="opr_rignt"/>
</item>
<item>
<widget class="QLabel" name="right">
<property name="text">
<string>右滑操作</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="verticalLayoutWidget_5">
<property name="geometry">
<rect>
<x>520</x>
<y>0</y>
<width>101</width>
<height>101</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_11">
<item>
<widget class="QGraphicsView" name="graphicsView_11"/>
</item>
<item>
<widget class="QLabel" name="label_11">
<property name="text">
<string>键盘点击操作</string>
</property>
<item row="1" column="0">
<widget class="QWidget" name="widget_6" native="true">
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QGraphicsView" name="opr_sleep"/>
</item>
<item>
<widget class="QLabel" name="sleep">
<property name="text">
<string>休眠操作</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="verticalLayoutWidget_6">
<property name="geometry">
<rect>
<x>0</x>
<y>130</y>
<width>101</width>
<height>101</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_12">
<item>
<widget class="QGraphicsView" name="graphicsView_12"/>
</item>
<item>
<widget class="QLabel" name="label_12">
<property name="text">
<string>休眠操作</string>
</property>
<item row="1" column="1">
<widget class="QWidget" name="widget_7" native="true">
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QGraphicsView" name="opr_up"/>
</item>
<item>
<widget class="QLabel" name="up">
<property name="text">
<string>上滑操作</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="verticalLayoutWidget_7">
<property name="geometry">
<rect>
<x>130</x>
<y>130</y>
<width>101</width>
<height>101</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_13">
<item>
<widget class="QGraphicsView" name="graphicsView_13"/>
<item row="0" column="4">
<widget class="QWidget" name="widget_5" native="true">
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QGraphicsView" name="opr_keyClick"/>
</item>
<item>
<widget class="QLabel" name="keyClick">
<property name="text">
<string>键盘点击操作</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QLabel" name="label_13">
<property name="text">
<string>上划操作</string>
</property>
<item row="1" column="2">
<widget class="QWidget" name="widget_8" native="true">
<layout class="QVBoxLayout" name="verticalLayout_8">
<item>
<widget class="QGraphicsView" name="opr_down"/>
</item>
<item>
<widget class="QLabel" name="down">
<property name="text">
<string>下滑操作</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="verticalLayoutWidget_8">
<widget class="QPushButton" name="confirmBtn">
<property name="geometry">
<rect>
<x>270</x>
<y>130</y>
<width>101</width>
<height>101</height>
<y>370</y>
<width>119</width>
<height>71</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_14">
<item>
<widget class="QGraphicsView" name="graphicsView_14"/>
</item>
<item>
<widget class="QLabel" name="label_14">
<property name="text">
<string>下划操作</string>
</property>
</widget>
</item>
</layout>
<property name="text">
<string>确认</string>
</property>
</widget>
</widget>
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>300</x>
<y>350</y>
<width>91</width>
<height>71</height>
</rect>
</property>
<property name="text">
<string>确认</string>
</property>
</widget>
</widget>
<resources/>
<connections/>

@ -44,11 +44,11 @@
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;图片地址&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'SimSun'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;图片地址&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton">
<widget class="QPushButton" name="uploadBtn_2">
<property name="geometry">
<rect>
<x>220</x>
@ -100,7 +100,7 @@ p, li { white-space: pre-wrap; }
<string>操作坐标:</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_2">
<widget class="QPushButton" name="uploadBtn">
<property name="geometry">
<rect>
<x>220</x>
@ -126,8 +126,8 @@ p, li { white-space: pre-wrap; }
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;0&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'SimSun'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;0&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
<widget class="QLabel" name="label_3">
@ -169,8 +169,8 @@ p, li { white-space: pre-wrap; }
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;0&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'SimSun'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;0&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
<widget class="QLabel" name="label_6">
@ -245,11 +245,11 @@ p, li { white-space: pre-wrap; }
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;图片地址&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'SimSun'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;图片地址&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_3">
<widget class="QPushButton" name="uploadBtn_3">
<property name="geometry">
<rect>
<x>220</x>
@ -275,12 +275,12 @@ p, li { white-space: pre-wrap; }
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;图片地址&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'SimSun'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;图片地址&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</widget>
<widget class="QPushButton" name="pushButton_4">
<widget class="QPushButton" name="next">
<property name="geometry">
<rect>
<x>230</x>
@ -293,7 +293,7 @@ p, li { white-space: pre-wrap; }
<string>next</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_5">
<widget class="QPushButton" name="previous">
<property name="geometry">
<rect>
<x>160</x>
@ -306,7 +306,7 @@ p, li { white-space: pre-wrap; }
<string>previous</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_7">
<widget class="QPushButton" name="preserveBtn">
<property name="geometry">
<rect>
<x>160</x>
@ -319,7 +319,7 @@ p, li { white-space: pre-wrap; }
<string>保存</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_6">
<widget class="QPushButton" name="cancelBtn">
<property name="geometry">
<rect>
<x>30</x>

@ -1,7 +1,8 @@
import os
from PyQt5.QtWidgets import QMainWindow, QListWidget, QPushButton
from PyQt5 import uic
from windows.res.rules.明日方舟自动清体力 import WorkerThread
from res.rules.明日方舟自动清体力 import WorkerThread
class orderselet(QMainWindow):

@ -1,5 +1,8 @@
from PyQt5.QtWidgets import QMainWindow, QComboBox
import os
from PyQt5.QtWidgets import QMainWindow, QComboBox, QPushButton, QTextEdit
from PyQt5 import uic
import shutil
from operateselect_window import operateselect
@ -10,9 +13,21 @@ class settingrule(QMainWindow):
uic.loadUi('res/ui/setRule_window.ui', self)
self.operateChoseBox = self.findChild(QComboBox, 'operateChose')
# 图片地址
self.operateChoseBox = self.findChild(QComboBox, 'operateChose') # 操作选择
self.cancelBtn = self.findChild(QPushButton, 'cancelBtn')#取消选择按钮
self.preserveBtn = self.findChild(QPushButton, 'preserveBtn') # 保存选择按钮
self.uploadBtn = self.findChild(QPushButton, 'uploadBtn') # "上传"按钮
self.uploadBtn_2 = self.findChild(QPushButton, 'uploadBtn_2')
self.uploadBtn_3 = self.findChild(QPushButton, 'uploadBtn_3')
self.operateChoseBox.activated.connect(self.handleComboBoxActivated)
self.cancelBtn.clicked.connect(self.cancel_clicked)
self.preserveBtn.clicked.connect(self.preserve_clicked)
self.uploadBtn.clicked.connect(self.write_image_to_folder)
self.uploadBtn_2.clicked.connect(self.write_image_to_folder_2)
self.uploadBtn_3.clicked.connect(self.write_image_to_folder_3)
self.operateselect_window = operateselect()
@ -24,3 +39,40 @@ class settingrule(QMainWindow):
def create新界面(self):
# 显示新界面
self.operateselect_window.show()
def cancel_clicked(self):
self.close()
def preserve_clicked(self):
self.close()
def write_image_to_folder(self): # 将图片写入目标文件
text_edit = self.findChild(QTextEdit, "textEdit")
self.image_path = text_edit.toPlainText()
print(self.image_path)
destination_path = "D:/代码/pythoncode/src/windows/res/pictures"
if not os.path.exists(self.image_path):
print("image address is not existing!")
return
shutil.copy(self.image_path, destination_path)
def write_image_to_folder_2(self): # 将图片写入目标文件
text_edit = self.findChild(QTextEdit, "textEdit_2")
self.image_path = text_edit.toPlainText()
print(self.image_path)
destination_path = "D:/代码/pythoncode/src/windows/res/pictures"
if not os.path.exists(self.image_path):
print("image address is not existing!")
return
shutil.copy(self.image_path, destination_path)
def write_image_to_folder_3(self): # 将图片写入目标文件
text_edit = self.findChild(QTextEdit, "textEdit_3")
self.image_path = text_edit.toPlainText()
print(self.image_path)
destination_path = "D:/代码/pythoncode/src/windows/res/pictures"
if not os.path.exists(self.image_path):
print("image address is not existing!")
return
shutil.copy(self.image_path, destination_path)

Loading…
Cancel
Save