这可能看起来像一个奇怪的问题,我不知道图像的格式所以我会继续问...
我正在制作一个使用按钮网格的扫雷游戏(与不同的东西相关),然后我使用按钮向按钮添加精灵backgroundImage
.如果网格是9x9,那很好.15x15它减慢速度和30x30你可以看到每个按钮被加载.
这引出了我的问题:哪种图像格式加载速度最快?显然,文件大小是加载速度的一部分,但是,我正在询问是否,例如,jpeg - 与gif相同的文件大小 - 将加载更快.或bmp,png等
我问这是为了看看我是否可以使用不同的格式更快地加载网格.
谢谢!
编辑:在此修订/更新之前这个问题的主要部分是如何终止 QThread。这个问题已经解决了,问题正在修改为如何终止正在进行的请求剩余对象。
http://docs.python-requests.org/en/v0.10.4/user/advanced/#asynchronous-requests 看来使用异步请求仍然会阻塞 - 用户无法在发布过程中取消发布。
基本上这是所需的功能:当用户按下 时Stop Uploading,上传必须立即停止,我可以使用 stop() 停止线程,但是只有在循环再次循环后才会检查是否应该停止。
所以基本上,应该可以使用异步请求,让我检查是否应该在请求期间取消它,但是,我不知道如何取消。
有什么建议么?帖子的前一部分仍然相关,因此如下。
请注意,如何终止 QThread 的最初问题已经解决,因此下面的代码并不是太重要,它只是用于上下文,我现在需要帮助的是我刚才描述的内容。
我一直在编写一个程序,它是一个照片上传器,我创建了一个上传文件的线程。我不知道如何退出线程。我尝试过从这里读到的建议:
1)我尝试了一个 bool 标志,将它包裹在方法和执行工作的 for 语句周围。
2)我使用了“with”,然后尝试设置例外。
我希望能够取消上传,最好是尽快取消。我读过很多文章,总是建议在终止线程之前“清理”线程,老实说,我不知道“清理”是什么意思。但是,我认为我应该能够终止该线程 - 因为它所做的只是将图像的二进制数据发送到 TUMBLR api。如果提前取消请求也没关系,因为它也会取消 api 中的上传。
无论如何,这是我的主题:
Run Code Online (Sandbox Code Playgroud)class WorkThread(QtCore.QThread): def __init__(self): QtCore.QThread.__init__(self) global w w = WorkThread def __del__(slf): self.wait() def run(self): url = 'https://www.tumblr.com/api/write' files = os.listdir(directory) for file in files: file_path = os.path.join(directory + '\\' + file) file_path = str(file_path) if file_path[-3:] in ['bmp', 'gif', 'jpg', 'png', 'thm', …
我需要弄清楚如何在数组中的枚举上获取元素.基本上,我有一个9x9按钮网格.我有两个包含这些值的多维数组.一个人的名字(如果名字是43),它意味着5个向下,4个跨越(因为它们从0开始).该名称也与数组中的ELEMENT相同.
string[,] playingField = new string[9, 9];
enum CellType { Empty, Flag, Hidden, Bomb }
CellType[,] cells = new CellType[9, 9];
Run Code Online (Sandbox Code Playgroud)
按钮的名称保存在playingField中.
每个细胞的状态保存在细胞中(如果它是空的,有炸弹等)
感谢AbdElRaheim给出了上述内容.我这样做的原因是我可以获得一个按钮名称(与元素名称完全相同),这两个数组在两个数组中都是相同的.
例如:我可以这样做:
string dim1 = Convert.ToString(btn.Name[0]);
string dim2 = Convert.ToString(btn.Name[1]);
if (cells[Convert.ToInt32(dim1), Convert.ToInt32(dim2)] == CellType.Bomb)
Run Code Online (Sandbox Code Playgroud)
(请原谅我可怕的转换.我稍后会解决这个问题;))以及上面的内容是什么让我看看你点击的单元格下面是否有炸弹.
但是,我现在需要做的,基本上与此相反.在上面我知道我要比较的元素名称,因为元素名称与按钮名称相同.不过,现在我需要做的是通过获取是所有元素的元素查找元素名称(按钮名称)Bomb
在cells
.
我不知道怎么做,我试过:
foreach (CellType Bomb in cells)
{
Run Code Online (Sandbox Code Playgroud)
但它没有做任何事情.我需要在'cells'中找到所有'bomb'并返回元素名称.这样我可以使用该元素名称,将其转换为字符串,并使用我的StringToButton
方法创建对按钮的引用.
这是我目前正在做的方式,作为参考,并帮助您更好地理解,但请注意这不是我想继续这样做的方式.我想按照上面提到的方式来做:)
foreach (string i in minedNodes)
{
Button buttonName = StringToButton(Convert.ToString(i));
buttonName.Image = new Bitmap(dir + "mine.png");
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在尝试为我在这里的一些人的帮助下编写的一个小程序制作GUI,无论如何,我在PyQt中制作了GUI,看起来很好.我添加了一个名为dirButton的按钮,上面写着"选择目录"
self.dirButton = QtGui.QPushButton(self.buttonWidget)
self.dirButton.setGeometry(QtCore.QRect(0, 0, 91, 61))
self.dirButton.setObjectName(_fromUtf8("dirButton"))
self.dirButton.clicked.connect(self.browse)
Run Code Online (Sandbox Code Playgroud)
在底线,我点击它时调用self.browse,这是:
def browse(self):
filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', '.')
fname = open(filename)
data = fname.read()
self.textEdit.setText(data)
fname.close()
Run Code Online (Sandbox Code Playgroud)
但是,这是我得到的错误:
Traceback (most recent call last):
File "C:\Users\Kevin\Desktop\python-tumblr-0.1\antearaGUI.py", line 88, in browse
filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', '.')
TypeError: QFileDialog.getOpenFileName(QWidget parent=None, QString caption=QString(), QString directory=QString(), QString filter=QString(), QString selectedFilter=None, QFileDialog.Options options=0): argument 1 has unexpected type 'Ui_mainWindow'
Run Code Online (Sandbox Code Playgroud)
因此,ui_mainWindow是我的所有GUI按钮和GUI本身都存储在其中的类.
class Ui_mainWindow(object):
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我会收到错误,有没有人有任何想法?
这是一个指向整个GUI的pastebin链接:http://pastebin.com/BWCcXxUW
在我的扫雷游戏中,我需要动态创建控件,以便在easy - medium - hard之间切换.让我们说,为了问题,硬包含100个按钮.
这就是我创建它们的方式:
this.SuspendLayout(); //Creating so many things that I assume it would be faster to suspend and resume.
foreach (string i in playingField)
{
Button button = new Button();
button.Name = i;
button.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
button.Margin = new Padding(0);
button.TabIndex = 0;
button.Location = new System.Drawing.Point(3, 3);
button.Size = new System.Drawing.Size(25, 25);
button.BackgroundImage = blockImage; //##//
button.MouseDown += new System.Windows.Forms.MouseEventHandler(this.GetUnderSide);
button.UseVisualStyleBackColor = false;
minesPanel.Controls.Add(button); //Adding the controls to the container
}
this.ResumeLayout(); //Refer to above. Correct …
Run Code Online (Sandbox Code Playgroud) 我正在编写一个程序,允许我通过他们的API将照片上传到TUMBLR,我已经上传了(感谢你们).
我在GUI的一侧放了一个'queueBox',它显示了图像名称,它们存储在QListWidget中.我把它放在我的Main Class'构造函数中:
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.setupUi(self)
self.queueBox.itemClicked.connect(self.displayPhoto)
Run Code Online (Sandbox Code Playgroud)
我有这个方法:
def displayPhoto(self, item):
tempName = (item.text())
print tempName
self.myLabel.setPixmap(QtGui.QPixmap(_fromUtf8(directory + '\\' + tempName)))
## self.myLabel.pixmap(QPixmap.scaled(aspectRatioMode = Qt.IgnoreAspectRatio))
## ^ ^ ^ What do I do with this? How do I set it to maintain aspect ratio?
## Currently it says ''NameError: global name 'Qt' is not defined''
Run Code Online (Sandbox Code Playgroud)
这成功地将图像绘制到myLabel,这是一个QLabel,然而,它是非常规模的,我有
self.myLabel.setScaledContents(True)
Run Code Online (Sandbox Code Playgroud)
在我的ui_mainWindow类中,如果我将其转换为False,它会修复缩放,但它只显示图像的一小部分,因为图像比QLabel大得多.我想要的是能够保持纵横比,所以它看起来不会缩放和可怕.
我发现了这个:http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qpixmap.html 它说如何使用它,但是我无法让它工作,如上面的代码所示在我的评论中.有谁知道如何使用它?如果是这样,你能给我一个例子吗,我试过搜索但是我得到的大部分结果都是用C++编写的例子,而不是python.
谢谢!
我正在制作一个扫雷游戏,到目前为止它完全可以玩,你可以完成游戏.但是,我的求解算法很糟糕.它非常混乱,我正在寻找一种更清洁的方式,也许是循环,但我想不出任何东西.
这是我目前正在使用的:
我有四个全球名单:
List<String> flaggedButtons = new List<String>();
List<String> minedNodes = new List<String>();
List<String> playingField = new List<String>();
List<String> adjacence = new List<String>();
Run Code Online (Sandbox Code Playgroud)
这是利用列表来解决游戏的方法:
整个方法:http://pastebin.com/7J2Fc8yw
最重要的部分:
char btnLetter = Convert.ToChar(buttonName.Substring(0, buttonName.Length - 1));
char aboveLetter = btnLetter; aboveLetter--;
char belowLetter = aboveLetter; belowLetter++; belowLetter++;
int upDown = Convert.ToInt32(buttonName.Substring(1));
int leftSide = Convert.ToInt32(buttonName.Substring(1)) - 1;
int rightSide = Convert.ToInt32(buttonName.Substring(1)) + 1;
//Clear the list by making a new list before adding the new values as to not overlap. …
Run Code Online (Sandbox Code Playgroud) 我正在建造一个可能完成75%的国际象棋游戏,这是一个零计划的冲动,因此非常混乱.
我有三个多维数组,一个包含枚举Colour
,另一个包含枚举,ChessPiece
最后一个包含坐标.
我想清理它,有两件事我能想到.
1)面向对象的编程.我可以构建一个具有Color,Coordinates和Piece属性的类,然后在游戏开始时实例化每个部分,并引用每个实例.
2)如果我可以向按钮控件添加属性,类似于类的属性,则更容易.即
button1.Piece = Pawn
button1指的是实际按钮.
有没有办法做到这一点?谢谢.
注意:我正在使用c ++编译器,因此我可以使用pass by reference
我有一个奇怪的问题,我真的不知道发生了什么.
基本上,我有一个文本文件:http://pastebin.com/mCp6K3HB ,我正在将文本文件的内容读入一个原子数组:
typedef struct{
char * name;
char * symbol;
int atomic_number;
double atomic_weight;
int electrons;
int neutrons;
int protons;
} atom;
Run Code Online (Sandbox Code Playgroud)
这是我对atom的类型定义.
void set_up_temp(atom (&element_record)[DIM1])
{
char temp_array[826][20];
char temp2[128][20];
int i=0;
int j=0;
int ctr=0;
FILE *f=fopen("atoms.txt","r");
for (i = 0; f && !feof(f) && i < 827; i++ )
{
fgets(temp_array[i],sizeof(temp_array[0]),f);
}
for (j = 0; j < 128; j++)
{
element_record[j].name = temp_array[ctr];
element_record[j].symbol = temp_array[ctr+1];
element_record[j].atomic_number = …
Run Code Online (Sandbox Code Playgroud) 正如你可能知道的那样,当语法突出显示为Sublime Text 2时,Visual Studio不提供相同的自由度(受意见/偏见,这是我的),但是,Resharper在语法方面确实有一些功能突出显示改进Visual Studio的默认突出显示.
所以说,在我开始制作之前,有没有人有一个Monokai - 默认的Sublime Text 2主题 - 为Resharper?
我知道我可以使用studiostyl.es - 但是这些主题仅适用于Visual Studio,因此Monokai主题仅大致相当于ST2中提供的Monokai.
如果有人有这个主题,你能把它贴在这里吗?
谢谢.:)
c# ×5
python ×3
button ×2
controls ×2
minesweeper ×2
pyqt4 ×2
arrays ×1
aspect-ratio ×1
c ×1
c++ ×1
enums ×1
for-loop ×1
foreach ×1
image ×1
kill ×1
loops ×1
oop ×1
output ×1
performance ×1
properties ×1
pyqt ×1
qlabel ×1
qpixmap ×1
qthread ×1
resharper ×1
solver ×1
struct ×1
themes ×1
winforms ×1