有没有办法在 PySimpleGUI 的多行小部件中获取光标的位置,存储它并将光标再次放回该小部件文本中的定义位置?
下面你可以看到我到目前为止编写的代码。我的目标是,当在上部窗口中键入“jk”时,光标会向下移动到输入行(有效)。用户可以在那里编写命令并完成输入(我还没有完成)。
现在的问题是如何让上方窗口中的光标跳回原来的位置?!
import PySimpleGUI as sg
layout = [ [sg.Multiline(key = 'editor',
size = (50, 10),
focus = True,
enable_events = True)],
[sg.InputText(key ='command', size = (45, 1), ),], ]
window = sg.Window('editor', layout)
while True:
event, values = window.read()
if 'jk' in values['editor']:
# delete jk and jump down in the command line #
window['editor'].update(values['editor'].replace('jk', ''))
window.Element('command').SetFocus(force = True)
if event in ('Close Window', None):
break
window.close()
Run Code Online (Sandbox Code Playgroud)
任何帮助都是值得赞赏的,因为没有关于在 PySimpleGui 中设置或获取光标位置的文档。提前致谢!
我一直在尝试运行这个脚本,但我得到的只是这个错误:
Error report:
ORA-06550: line 3, column 15:
PLS-00103: Encountered the symbol "IS" when expecting one of the following:
constant exception <an identifier>
<a double-quoted delimited-identifier> table long double ref
char time timestamp interval date binary national character
nchar
The symbol "IS" was ignored.
Run Code Online (Sandbox Code Playgroud)
这是我的脚本:
set serveroutput on
DECLARE
cursor depts_cur is select dname from dept;
depts_cur_rec is depts_cur%type;
BEGIN
loop
fetch depts_cur into depts_cur_rec;
exit when depts_cur_rec%notfound;
dbms_output.put_line('Department: ' || depts_cur_rec);
end loop;
close depts_cur;
END;
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助.
我收到以下错误:
06-09 06:56:24.675: E/AndroidRuntime(1629): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gauvion.simpleworkouttracker/com.myapp.MainActivity}: java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)
Logcat说它的原因是:
06-09 06:56:24.675: E/AndroidRuntime(1629): Caused by: java.lang.NullPointerException
06-09 06:56:24.675: E/AndroidRuntime(1629): at com.myapp.MainActivity.onCreate(MainActivity.java:26)
Run Code Online (Sandbox Code Playgroud)
以下是MainActivity的代码:
package com.myapp;
import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.Menu;
import android.widget.Toast;
public class MainActivity extends ListActivity {
private DayDataSource datasource;
private SimpleCursorAdapter dataAdapter;
private Cursor cursor;
private boolean isEditing = false;
private Toast toast_deleted;
private String[] columns = new String[] { MySQLiteHelper.COLUMN_NAME, MySQLiteHelper.COLUMN_DAY };
private int[] to;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) …Run Code Online (Sandbox Code Playgroud) 我已将此光标写入佣金报告.会发生什么是佣金来自一个表,记录是另一个表.我根据某些标准匹配两个(没有完全匹配).问题是存在记录的重复.当我将佣金与records表格匹配时,可能会导致重复这些重复.因此,代表获得更多报酬.另一方面,佣金表中也有重复,但这些都是有效的,因为它们简单意味着账户已经支付了2个月.
我写了这个查询,但需要5分钟才能运行.我在记录表中有50,000条记录,在佣金表中有100,000条记录.有什么方法可以改进这个游标吗?
/* just preparation of cursor, this is not time consuming */
CREATE TABLE #result
(
repid INT,
AccountNo VARCHAR(100),
supplier VARCHAR(15),
CompanyName VARCHAR(200),
StartDate DATETIME,
EndDate DATETIME,
Product VARCHAR(25),
commodity VARCHAR(25),
ContractEnd DATETIME,
EstUsage INT,
EnrollStatus VARCHAR(10),
EnrollDate DATETIME,
ActualEndDate DATETIME,
MeterStart DATETIME,
MeterEnd DATETIME,
ActualUsage INT
)
DECLARE @AccountNo VARCHAR(100)
DECLARE @supplier VARCHAR(10)
DECLARE @commodity VARCHAR(15)
DECLARE @meterstart DATETIME
DECLARE @meterEnd DATETIME
DECLARE @volume FLOAT
DECLARE @RepID INT
DECLARE @Month INT
DECLARE @Year INT
SET …Run Code Online (Sandbox Code Playgroud) 你好,我正在使用 SQLite 制作应用程序,我正在学习读取数据的函数,我遇到了这个:
while(!cursor.isAfterLast()){}
Run Code Online (Sandbox Code Playgroud)
这是什么意思?它返回什么?
我有一个光标:
DECLARE db_inner_cursor_info CURSOR FOR Select Col1 , Col2 ..... from TBL1
OPEN db_inner_cursor_info
FETCH NEXT FROM db_inner_cursor_info
INTO @Col1
print @Col1
etc.
Run Code Online (Sandbox Code Playgroud)
我只需要来自的值TBL1.Col1,但是我无法从SELECT游标声明中的语句中删除其余的列.
我怎样才能做到这一点?
请考虑以下代码:
Declare @MyMinMaxTable Table
(
[Min] int,
[Max] int,
[Desc] NVARCHAR(50)
)
Insert into @MyMinMaxTable
values (0,12,N'Child'),
(13,19,N'Teenager'),
(20,25,N'Youth'),
(25,40,N'Middle-aged'),
(40,99,N'Old')
Declare @MyTable Table
(
Id int identity(1,1),
[Year] int,
Age int,
MyCol2 int,
MyCol3 int null
)
Insert into @MyTable
([Year], Age, MyCol2, MyCol3)
values
(2012, 10, 1 , 1),
(2012, 28, 2 , 3),
(2012, 14, 1 , 7),
(2012, 24, 3 , 3),
(2012, 80, 1 , 6),
(2012, 39, 1 , 3),
(2012, 45, 1 , …Run Code Online (Sandbox Code Playgroud)